Получить последнюю запись из каждой группы и количество групповых строк в MySQL - PullRequest
0 голосов
/ 06 июля 2018

У меня есть такой стол:

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)

Эта версия также неверна, потому что счетчик не может работать хорошо без группировки по.

Я не могу понять, как я могу объединить преимущества двух версий. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте это

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
...