sql GROUP BY -- Достать результаты суммирования, в виде ассоциативного массива -- пример запроса

Forums:

Задача

Есть таблица Sale с полями id, amount, shop_id.
Нам нужно достать сумму сумм(amount), отдельно по каждому магазину(shop_id).
Как сделать это в одном sql-запросе?

Запрос

SELECT SUM(amount) FROM `sale` 
    WHERE shop_id IN (1,2,3,4,5)
    GROUP BY shop_id;

В результате мы получим массив, в котором ключами будут shop_id, а значениями - результат функции SUM() всех amount из строк с соответствующим shop_id.

Такой массив получается благодаря инересному поведению GROUP BY. Если бы мы не использовали его в своём запросе, в результате получили бы одно число - общую сумму всех amount по всем shop_id

vedro-compota's picture

для удобства чтения лучше перед WHERE делать перенос строки с отступом -- или несколько переносом если требуется.

_____________
матфак вгу и остальная классика =)

melisa's picture

поправила