这个问题在这里已经有答案了:
sql仅选择列上具有最大值的行[重复](27个答案)
三年前关门了。
我有一个表,每个id重复3次。每行的每个id前面都有一个日期。
我想为每个日期最晚的id选择整行。此表中总共有370列我希望在选择该行时选择所有列。
样品-
ID Name Date Marks .. .. ..
1 XY 4/3/2017 27
1 fv 4/3/2014 98
1 jk 4/3/2016 09
2 RF 4/12/2015 87
2 kk 4/3/2009 56
2 PP 4/3/2011 76
3 ee 4/3/2001 12
3 ppp 4/3/2003 09
3 lll 4/3/2011 23
答案应该是
ID Name Date Marks .. .. ..
1 XY 4/3/2017 27
2 RF 4/12/2015 87
3 lll 4/3/2011 23
我尝试如下-
select distinct ID,*,max(date) as maxdate from table
我也在 hive 里试这个。所以不确定一些sql函数是否在hive中不起作用
谢谢
6条答案
按热度按时间ercv8c1e1#
可以使用相关子查询(即在主查询中引用字段的子查询)来实现这一点。在这种情况下:
在这里我们给出
yourtable
表1的别名t1
然后在获取max(date)
从同一张tableyourtable
为了这个id
.pb3skfrl2#
这里有一条路。内部查询获取每个id的最大日期。然后您可以将其连接回主表以获取匹配的行。
3xiyfsfu3#
一种方法是:
请注意,若您有多个相同id的相同日期,那个么您将在结果中得到所有这些行
h4cxqtbf4#
可以使用连接来执行此操作
只有每个id的最新日期为的行与t2的联接为空。
vm0i2vca5#
您是否尝试过以下方法:
2guxujil6#
这个问题以前有人问过。请看这个问题。
使用公认的答案并根据您的问题进行调整,您会得到: