Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
robert22
Member

Откуда:
Сообщений: 3
Есть таблица:
Name Temperature date
Александровка 0 06.12.2016
Александровка 1 16.01.2016
Александровка 3 09.10.2016
Александровка 4 20.10.2016
Альшаны -2 09.01.2016
Альшаны -1 10.12.2016
Альшаны 2 01.01.2016
Альшаны 3 02.01.2016
Дмитровск -1 11.12.2016
Дмитровск 2 20.12.2016
Дмитровск 6 21.10.2016


Собственно вопрос:
Какой запрос надо написать, чтоб получить на выходе
все поля (Name, Temperature, date) соответствующие минимальным значениям Temperature для каждого Name:

Name Temperature date
Александровка 0 06.12.2016
Альшаны -2 10.12.2016
Дмитровск -1 11.12.2016


Спасибо.
13 янв 17, 11:06    [20101703]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8813
robert22,

найдите ключ: имя + минимум температуры. Дату можно найти по значению ключа.
13 янв 17, 11:10    [20101727]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8813
/Ну или новомодные сортировки с группировкой top (1) with ties ... order by row_number() over ....
13 янв 17, 11:12    [20101739]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY Name ORDER BY Temperature),* FROM T)
SELECT Name,Temperature,[date] FROM CTE WHERE N=1;
13 янв 17, 11:19    [20101783]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
robert22
Member

Откуда:
Сообщений: 3
Владислав Колосов
/Ну или новомодные сортировки с группировкой top (1) with ties ... order by row_number() over ....

Я - нуб.
Можно на пальцах оба способа?
13 янв 17, 11:21    [20101790]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8813
robert22,
говоря буквально создайте запрос из таблицы объединённую с подзапросом по полям имя и температура, в подзапросе выберите поле названия и вычислите min() для температуры.
13 янв 17, 11:30    [20101837]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
robert22
Member

Откуда:
Сообщений: 3
iap
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY Name ORDER BY Temperature),* FROM T)
SELECT Name,Temperature,[date] FROM CTE WHERE N=1;
Великолепно. Блестяще. Но для меня пока не понятно. А есть ли более универсальный способ? Типа запрос в запросе select ....(select .....)
13 янв 17, 13:30    [20102547]     Ответить | Цитировать Сообщить модератору
 Re: Как выбрать из таблицы минимальные значения одного поля и показать остальные поля?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
robert22
iap
WITH CTE AS(SELECT N=ROW_NUMBER()OVER(PARTITION BY Name ORDER BY Temperature),* FROM T)
SELECT Name,Temperature,[date] FROM CTE WHERE N=1;
Великолепно. Блестяще. Но для меня пока не понятно. А есть ли более универсальный способ? Типа запрос в запросе select ....(select .....)

это и есть запрос в запросе
13 янв 17, 13:39    [20102597]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить