@Ivan_R2

Как вместо вывода каждой строки сделать группировку с подсчетом количества в SQL?

Здравствуйте!
У меня есть запрос, который фильтрует id в таблице по условию и выводит 2 колонки - id и имя связанной записи из другой таблицы. Результаты выводятся в таком виде:
5f6b6fb944207123292502.png
Другими словами, мне нужно подсчитать, сколько отфильтрованных записей в каждой группе.
Сам запрос:
SELECT contacts.id, contact_group.name AS group
FROM contacts
INNER JOIN contact_group
            ON contacts.group_id = contact_group.id
WHERE contacts.path
        LIKE '43/44/45/%'
        AND contacts.id != 45
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@VitaliiVV
мимопроходил
количество строк которые нужно посчитать - нужно обернуть в агрегатную функцию COUNT,
и в конце запроса после условий сгруппировать по столбцам БЕЗ агрегатных функций.
Должно получиться что-то такое -
SELECT COUNT(contacts.id) AS Id_Qty, contact_group.name AS group
FROM contacts
INNER JOIN contact_group
ON contacts.group_id = contact_group.id
WHERE contacts.path
LIKE '43/44/45/%'
AND contacts.id != 45
GROUP BY contact_group.name

код можно сократить если использовать алиасы для имен таблиц
например SELECT c.id FROM contacts AS c (при работе с несколькими таблицами)
(в MS SQL Server можно опустить и AS - просто писать название колонки через пробел,
и 'INNER', там джоин без указания типа по умолчанию - как раз иннер)
p.s. и еще я сомневаюсь в порядке вывода, думаю если нужно количество айдишников для групп, логичнее выводить их в виде - группа1- 10 штук, группа2 - 5
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы