#mysql
#mysql
Вопрос:
У меня есть загрузка элементов в таблице. У каждого есть user_id.
Я хотел бы узнать количество элементов на пользователя, а также общее количество элементов.
Если я сделаю это:
SELECT COUNT(id)
FROM items
GROUP BY user_id
… Я получаю количество элементов на пользователя, но я не могу получить общее количество элементов, поскольку они сгруппированы.
Возможно ли это сделать?
Если да, то это хороший способ сделать что-то?
Было бы лучше суммировать подсчеты после их выбора?
Ответ №1:
Следующий запрос выдаст вам дополнительную строку с общим количеством элементов s и user_id=NULL.
SELECT user_id, COUNT(id) n_items
FROM items
GROUP BY user_id WITH ROLLUP
Смотрите также документы Mysql о ГРУППИРОВАНИИ ПО модификаторам.
Комментарии:
1. Мне также потребовался один день поиска в Google и чтения в то время, чтобы выяснить… Я не знал stackoveflow 🙂
Ответ №2:
Что-то вроде этого …?
SELECT COUNT(*)
FROM items
UNION
SELECT COUNT(id)
FROM items
GROUP BY user_id
Тогда первым результатом будет total, а последующие результаты будут сгруппированными итогами.
Но лично я бы просто добавил их после выполнения group by
запроса, как вы сказали.