Как сделать несколько COUNT в одном запросе?
СУБД: MySQL 8.0.29
Есть таблица:
CREATE TABLE orders ( id INT, userId INT, tripType varchar(255) );
INSERT INTO `orders` (`id`, `userId`, `tripType`) VALUES
(1, 1, 'way'), (2, 2, 'way'), (3, 3, 'way'),
(4, 1, 'on-road'), (5, 2, 'on-road'), (6, 3, 'way');
SELECT * FROM orders;
Как посчитать сколько пользователь выполнил заказов всего и сколько по типам, в одной выборке?
Например, чтобы узнать, сколько всего, я делаю группировку по пользователю:
SELECT userId, COUNT(*) totalOrders FROM orders GROUP BY 1
Чтобы узнать, сколько по типам:
SELECT userId, tripType, COUNT(*) totalOrderByTripType FROM orders GROUP BY 1, 2
Хочу увидеть сумму по странам и сумму по типам:
Ответы (1 шт):
Автор решения: Roman-Stop RU aggression in UA
→ Ссылка
Используйте WITH ROLLUP чтоб сделать свертки существующих групп и HAVING GROUPING(...) чтоб отсеять ненужные свертки:
SELECT userId, tripType, COUNT(*) totalOrderByTripType
FROM orders
GROUP BY 1, 2
WITH ROLLUP
HAVING GROUPING(userId) = 0
