SQL-分组依据,保留最早的行

SQL-分组依据,保留最早的行,sql,group-by,Sql,Group By,我有以下表格: name team date ----------------------------------- John A-team 02-5-2014 Jessica A-team 08-6-2015 David A-team 11-2-2013 Bill B-team 12-5-2017 Nicole B-team 18-1-

我有以下表格:

name         team         date
-----------------------------------
John         A-team       02-5-2014
Jessica      A-team       08-6-2015
David        A-team       11-2-2013
Bill         B-team       12-5-2017
Nicole       B-team       18-1-2010
Brandom      B-team       22-9-2012
我正在尝试创建一个查询,该查询执行以下操作:

每队一排,所以我们分组 选择最先发生的行,这样我们就可以在mindate上聚合 以下查询提供了团队和日期:

select   team, min(date)
from     my_table
group by team
但是我怎样才能检索到这个名字呢?我尝试了以下查询,但现在我得到了我理解的所有行,因为分组没有任何作用,因为所有行现在都是唯一的:

select   name, team, min(date)
from     my_table
group by team, name

进行自联接,将第一个查询用作子查询以查找每个团队的第一个日期:

select t1.*
from my_table t1
join
  (select team, min(date) min_date
   from my_table
   group by team) t2 on t1.team = t2.team and t1.date = t2.min_date
如果团队第一次约会时有两个名字,将返回两个名字

如果您只希望每个团队有一行,即使该日期有两个名称,您也可以按进行其他分组,或者干脆不存在:


进行自联接,将第一个查询用作子查询以查找每个团队的第一个日期:

select t1.*
from my_table t1
join
  (select team, min(date) min_date
   from my_table
   group by team) t2 on t1.team = t2.team and t1.date = t2.min_date
如果团队第一次约会时有两个名字,将返回两个名字

如果您只希望每个团队有一行,即使该日期有两个名称,您也可以按进行其他分组,或者干脆不存在:


提示:使用到最小日期的联接。提示:使用到最小日期的联接。我没有想到要在同一个表上联接!非常感谢。如果有多行具有相同但不同的名称,如何避免出现多个条目?请使用其他分组方式,例如min.@JadeDezo-那么在这种情况下,您需要的确切名称是什么?当然@奥托沙瓦泽我是从理论的角度问的。我现在明白了。THANKS@jarlh谢谢你的更新。有趣的方法不存在。我没有想过加入同一张桌子!非常感谢。如果有多行具有相同但不同的名称,如何避免出现多个条目?请使用其他分组方式,例如min.@JadeDezo-那么在这种情况下,您需要的确切名称是什么?当然@奥托沙瓦泽我是从理论的角度问的。我现在明白了。THANKS@jarlh谢谢你的更新。有趣的方法不存在。我认为问题是询问与显示日期相同的行的名称。但这并不完全清楚。@TobySpeight如果你是对的,那么是的,这不是正确的例子我想问题是询问显示日期所在行的名称。但这并不完全清楚。@TobySpeight如果你是对的,那么是的,这不是正确的例子
SELECT min(NAME)
    ,team
    ,min(DATE)
FROM my_table
GROUP BY team