Как использовать SQL для вывода последней информации с несколькими столбцами - PullRequest
0 голосов
/ 04 января 2011

У меня есть таблица "погоды" ниже с 3 столбцами:

 City Temperature Date
 New York    22 C 10/10/2005
 Seattle     21 C 10/10/2005
 New York    18 C 10/09/2005
 Seattle     20 C 10/09/2005
 Washington  17 C 10/09/2005
 New York    21 C 10/08/2005
 Washington  20 C 10/08/2005

Я хочу узнать последнюю информацию о городе и температуре в 3 столбцах (см. Пример):

 City Temperature Date
 New York    22 C 10/10/2005
 Seattle     21 C 10/10/2005
 Washington  17 C 10/09/2005

Кто-нибудь может помочь?

Ответы [ 3 ]

2 голосов
/ 04 января 2011

Найдите максимальную (самую последнюю) дату для каждого города в подзапросе, затем присоединитесь к дате и городу:

select weather.* 
  from weather
  inner join    
    (select city, max(date) from weather group by city) as latest
    on weather.date = latest.date
      and weather.city = latest.city
1 голос
/ 04 января 2011

Есть несколько методов. Лично я считаю, что наиболее выразительным является следующее:

 SELECT * FROM weather w1 WHERE NOT EXISTS
     (SELECT * FROM weather w2 WHERE w2.city = w1.city AND w2.date > w1.date)
0 голосов
/ 04 января 2011

Вариант 1:

select city, temparature, date 
from  weather t1
where date = (select max(date)
              from   weather t2
              where  t2.city=t1.city)

Вариант 2:

select t1.city, t1.temp, t1.date
from weather t1
where not exists (select 1
                  from weather t2
                  where t2.date > t1.date and t1.city=t2.city)
...