У меня есть таблица MySQL, называемая списками тегов
Поля: list_id, person_id, company_id
id | List_id | Person_id | Company_id
-------------------------------------
1 | L1 | P1 | C1
2 | L1 | P2 | C1
3 | L1 | p3 | C3
4 | L2 | P4 | C4
5 | L2 | P5 | C5
Как я могу получить вывод, как показано ниже. Возможно ли это в одном запросе MySQL?
id | List_id | Person_count | Company_count
-------------------------------------------
1 | L1 | 3 | 2
2 | L2 | 2 | 2
Используя обычную группу по одному столбцу, я могу найти либо person_count, либо company_count для списков.
Select list_id, count(person_id) from tag_lists group by list_id
Вы можете использовать DISTINCT и два метода COUNT():
SE list_id, COUNT(DISTINCT person_id), COUNT(DISTINCT company_id) FROM tag_lists GROUP BY list_id
Таким образом, вы должны получить желаемый результат. Я не проверял это.
Вы пробовали это:
Select list_id, count(distinct person_id),count(distinct Company_id) from tag_lists group by list_id
Попробуйте выполнить следующий запрос:
Select list_id, count(Distinct person_id), count(Distinct Company_id)
from tag_lists
group by list_id
COUNT
дважды?SELECT list_id, COUNT(person_id), COUNT(company_id) FROM tag_lists GROUP BY list_id