我正在尝试选择最大日期和第二个最大日期,但无法取得成功。
这是表格数据。
ID Country DATE
1 Canada 2016-05-26
2 Canada 2016-05-25
3 Canada 2016-05-24
4 USA 2016-04-02
5 USA 2016-04-01
6 USA 2016-03-20
期待输出
Country Max_Date 2nd_Date
Canada 2016-05-26 2016-05-25
USA 2016-04-02 2016-04-01
我为此做了什么:
使用此查询获取最大日期。
select Country, MAX(Date) from tbl GROUP BY (Country);
对于第二个最大日期但未能获得结果:
SELECT Country, MAX(date) FROM tbl WHERE Date NOT IN
( select MAX(FROM) from tbl GROUP BY (Country)) GROUP BY (Country)
我应该尝试获得预期的输出。感谢
答案 0 :(得分:2)
或者你可以试试这个
SELECT s.Country, Max(s.Date) Max_Date,
(SELECT t.Date
FROM tbl t
Where s.Country=t.Country
ORDER BY Date DESC
LIMIT 1,1) 2nd_Date
FROM tbl s
GROUP BY COUNTRY;
LIMIT子句基于零,因此使用参数1,1跳过第一个(即最大值)&只返回一个值(第二个最大值)。
注意 - 如果最大日期重复,则查询将返回Max_Date& 2nd_Date为相同的值 - 如果这不是你想要的,那么你可以将DISTINCT添加到内部查询。
答案 1 :(得分:0)
这可能是一种痛苦。这是一种方法:
select t.country, maxdate, max(t.date) as secondate
from tbl t left join
(select country, max(date) as maxdate
from tbl
group by country
) c
on t.country = c.country and t.date < c.maxdate
group by t.country;
答案 2 :(得分:0)
无需嵌套查询来解决此问题:
SELECT t1.country, max(t1.date), max(t2.date)
FROM tbl t1
JOIN tbl t2 ON t1.country = t2.country AND t2.date < t1.date
GROUP BY t1.country;
答案 3 :(得分:0)
试试这个
Select Country, MAX(Date) As Date From tbl GROUP BY Country Order By Date Desc Limit 2;