0

activities私は、人、スポーツ、およびその人がスポーツをした日付で呼び出されるテーブルを持っています。例:

person | sport      | date
--------------------------------
jane   | soccer     | 09/15/2012
sam    | basketball | 09/10/2012
jane   | tennis     | 09/12/2012
sam    | basketball | 09/08/2012
sam    | soccer     | 09/04/2012
jane   | tennis     | 09/01/2012
sam    | basketball | 08/27/2012
jane   | football   | 08/23/2012

ある人がスポーツをした最新の日付を含む行が必要です。結果は次のようになります。

person | sport      | date
--------------------------------
jane   | soccer     | 09/15/2012
sam    | basketball | 09/10/2012
jane   | tennis     | 09/12/2012
sam    | soccer     | 09/04/2012 
jane   | football   | 08/23/2012

たとえば、Jane が 9/1 にテニスをしている行は、新しい 9/12 にもプレーしたため、除外されていることがわかります。

このクエリは何でしょうか? サブクエリ以外の回答を希望しますが、すべての回答を歓迎します。また、MySQL と PostgreSQL の両方の回答を歓迎します。

4

2 に答える 2

2

ここにあります:

      select person, sport, max( date) as date 
      from activities
      group by person, sport
于 2012-10-08T19:28:09.907 に答える
2

row_number()PostgreSQL で使用できます ( SQL Fiddle with Demoを参照):

select *
from 
(
  select person, sport, date,
    row_number() 
      over(partition by person, sport order by date desc) rn
  from yourtable
) x
where rn = 1
于 2012-10-08T19:32:34.290 に答える