Как составить SQL-запрос, к-рый покажет сумму данных по колонке A у строк с неуникальным значением в колонке B?
Есть таблица с колонками:
- id;
- order_id;
- order_sum.
В колонке id номера уникальные, а вот в колонке order_id много дубликатов - строк у к-рых этот order_id совпадает.
Задача: составить такой SQL-запрос, к-рый покажет сумму по order_sum у строк с неуникальным order_id (или как вариант - с уникальным).
Исходим из того, что order_sum у дубликатов одинаковый.
Получить order_sum по каждому order_id, имеющему дубликаты:
SELECT
order_id,
MAX(order_sum) AS d_sum
FROM table
GROUP BY order_id
HAVING COUNT(id) > 1
Просто так order_sum в списке полей написать не получится - можно только те поля, что входят в GROUP BY.
Но можно использовать агрегатные функции: MAX, MIN, AVG, SUM, COUNT.
Просуммировать всё:
SELECT SUM(d_sum) AS a_sum
FROM (
SELECT
order_id,
MAX(order_sum) AS d_sum
FROM table
GROUP BY order_id
HAVING COUNT(id) > 1
) AS q