我有一张这样的桌子:
id | column_a | column_value
1 | x | 5
2 | y | 7
3 | z | 4,7
4 | x | 3,6
5 | y | 2
6 | w | 5,8,9,11
我想从每个组的最新记录中获取column_value,并从组中获取行数。
所以结果应该是这样:
count(id) | column_value
2 | 3,6
2 | 2
1 | 4,7
1 | 5,8,9,11
我试图通过以下两条路径来实现这一目标:
select count(id), column_value
from table
group by column_a
此版本从小组中检索了第一条记录,所以对我来说不太好。
select count(id), column_value
from table
where id in (select max(id)
from table
group by column_a)
此版本也有问题,因为如果没有分组依据,计数将无法正常工作。
我不知道该如何结合两个版本的优点。 任何帮助表示赞赏。
答案 0 :(得分:0)
尝试一下
Select cnt, column_value
from tst t inner join (
Select column_a, count(id) cnt, max(id) as max_id
from tst
group by column_a ) x on (t.column_a= x.column_a and t.id = x.max_id)
order by cnt desc