Как подсчитать количество записей, возвращаемых группой по запросу,
Например:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
Дает мне,
1
1
2
Мне нужно посчитать вышеупомянутые записи, чтобы получить 1 + 1 + 1 = 3.
sql-server
tsql
count
group-by
Крис
источник
источник
Ответы:
Вы можете сделать оба в одном запросе, используя предложение OVER в другом COUNT
источник
column_1, column_2, column_3, column_4
). Это может быть или не быть значительным побочным эффектом, в зависимости от того, как вы обрабатываете результаты.Самое простое решение - использовать производную таблицу:
Другое решение заключается в использовании Count Distinct:
источник
Я знаю, что уже поздно, но никто не предложил это:
По крайней мере, это работает в Oracle - у меня нет других баз данных для тестирования, и я не очень знаком с синтаксисом T-Sql и MySQL.
Кроме того, я не совсем уверен, является ли более эффективным в синтаксическом анализаторе, чтобы сделать это таким образом, или же лучше, если все остальные решают вложить оператор select. Но я считаю это более элегантным с точки зрения кодирования.
источник
Я пытался добиться того же без подзапроса и смог получить требуемый результат, как показано ниже
источник
У меня CTE работал:
источник
Как насчет:
источник
Вы могли бы сделать:
источник
В PostgreSQL это работает для меня:
источник
Можете ли вы выполнить следующий код ниже. Это работало в Oracle.
источник
Вы также можете получить по запросу ниже
источник
Попробуйте этот запрос:
источник
Следуя за PrestoDb , где FirstField может иметь несколько значений:
источник
Как насчет использования функции разделения COUNT OVER (PARTITION BY {столбец для группировки по}) в SQL Server?
Например, если вы хотите сгруппировать продажи товара по ItemID и хотите подсчитать каждый отдельный ItemID, просто используйте:
Если вы используете этот подход, вы можете оставить GROUP BY вне изображения - при условии, что вы хотите вернуть весь список (как вы могли бы сделать группировку отчета, где вам нужно знать все количество элементов, которые вы собираетесь объединить, не имея для отображения всего набора данных, т. е. служб отчетов).
источник
BandedItemCount
содержать именно? Отличается ли он между выходными строками? Аскер ищет количество различных уровней группировки.