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