#mysql
#mysql
Вопрос:
Мне нужен запрос MySQL, чтобы выполнить следующее: выбрать все элементы в таблице, сгруппировать их по типу, упорядочить их по типу count, а также суммировать все подсчеты.
Это то, что я делал до сих пор:
select type, count(*) as cnt from $tbl_name group by type order by count(*) desc;
Это дает мне только количество для каждой группы. Что я должен добавить, чтобы этот код также показывал общее количество (суммировал количество из каждой группы).
Ответ №1:
select * from (
select type as type,
count(*) as cnt
from $tbl_name
group by type WITH ROLLUP) as inner_table
order by cnt desc;
Обратите внимание, что первой строкой будет итоговая сумма.
Комментарии:
1. И как мне получить доступ к значению?
2. Извините, я отредактировал select, потому что он выдал «неправильное использование свертки и ПОРЯДКА ПО». При каком значении у вас возникают проблемы с доступом к нему?
3. Этот запрос возвращает: Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_VARIABLE
4. @Cristy, в этом запросе нет переменной T_VARIABLE. Я просто запускаю его (заменил имя таблицы и название столбца) в моей базе данных MySQL, и все просто отлично.
5. Извините, это работает нормально, но я все еще не знаю, как получить из него общую сумму. Можете ли вы это объяснить? Я имею в виду, я получаю cnt, извлекая результат и обращаясь к $ row[‘cnt’] , но как мне получить общую сумму? (внутренняя таблица)
Ответ №2:
Попробуйте это:
выберите тип, SUM(count(*)) как cnt из группы $tbl_name по типу order by count(*) desc;
Комментарии:
1. Мне нужно иметь cnt, который я делал раньше, а также переменную, показывающую, сколько элементов всего.
2. если вы извлекаете запрос в
loop
, вы можете сделать это там.3. Я этого не делаю, я извлекаю только первые 6 строк.