У меня есть такая таблица:
id | value
1 | a
1 | a
1 | b
1 | c
2 | a
2 | a
2 | a
2 | c
И я хочу count(*) by id
, а затем count(value==a) by id
, что означает, что это желаемые результаты:
id | total_counts | a_counts
1 | 4 | 2
2 | 4 | 3
Я знаю, как это сделать, присоединившись к двум подзапросам, но есть ли более простой / быстрый способ сделать это? Понравился этот псевдокод:
SELECT id, COUNT(*) AS total_counts, COUNT(value==a) AS a_counts
FROM table
GROUP BY id
Не уверен, есть ли способ выполнить часть COUNT(value==a)
. Пожалуйста, помогите.