Как получить количество каждого значения по уникальному идентификатору в Mysql

0

Ниже приведена таблица:

Где столбец Val имеет 3 различных значения a, b и c.

ID     Val
1      a
1      a
1      b
2      b
2      c
2      c
3      c

Я хочу получить количество уникальных идентификаторов и количество идентификаторов для соответствующего значения Val (т.е. a, b & c).

Я использую такой запрос, но он помогает мне определить счетчик для одного значения Val за раз.

SELECT ID,COUNT(*) 
FROM table1
WHERE Val='c' GROUP BY ID;

Требуемый вывод:

ID      count    a     b    c
1       3        2     1    0
2       3        0     1    2      
3       1        0     0    1
  • 0
    Это должно быть в этом формате?
  • 0
    @PaulSpiegel Да ..
Теги:

2 ответа

1
Лучший ответ

Вы можете использовать группу by и суммировать счетчик, когда val равно a, b или c. Увидеть ниже:

select id, 
    count(*) as 'count', 
    sum(case when val = 'a' then 1 else 0 end) as a, 
    sum(case when val = 'b' then 1 else 0 end) as b, 
    sum(case when val = 'c' then 1 else 0 end) as c
from yourTable
group by id;
  • 0
    @anonyXmouS Спасибо .... это сработало.
1

Просто используйте условную агрегацию:

select id, count(*), sum(val = 'a') as a, sum(val = 'b') as b, sum(val = 'c') as c
from table1
group by id;
  • 0
    это дает мне ошибку функции сумма (логическое значение) не существует.
  • 0
    @VectorJX Пометьте свой вопрос с правильной RDBMS. Это работает для MySQL.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню