Comment compter le nombre d'enregistrements renvoyés par un groupe par requête,
Par exemple:
select count(*)
from temptable
group by column_1, column_2, column_3, column_4
Donne moi,
1
1
2
Je dois compter les enregistrements ci-dessus pour obtenir 1 + 1 + 1 = 3.
sql-server
tsql
count
group-by
Chris
la source
la source
Réponses:
Vous pouvez faire les deux dans une requête en utilisant la clause OVER sur un autre COUNT
la source
column_1, column_2, column_3, column_4
). Cela peut être ou non un effet secondaire important, selon la façon dont vous traitez les résultats.La solution la plus simple consiste à utiliser une table dérivée:
Une autre solution consiste à utiliser un Count Distinct:
la source
Je sais qu'il est plutôt tard, mais personne n'a suggéré ceci:
Cela fonctionne au moins dans Oracle - je n'ai actuellement pas d'autres bases de données sur lesquelles le tester, et je ne suis pas très familier avec la syntaxe T-Sql et MySQL.
De plus, je ne suis pas tout à fait sûr qu'il soit plus efficace dans l'analyseur de le faire de cette façon, ou si la solution de tout le monde consistant à imbriquer l'instruction select est meilleure. Mais je trouve celui-ci plus élégant du point de vue du codage.
la source
J'essayais d'obtenir la même chose sans sous-requête et j'ai pu obtenir le résultat requis comme ci-dessous
la source
Un CTE a travaillé pour moi:
la source
Que diriez-vous:
la source
Vous pourriez faire:
la source
Dans PostgreSQL, cela fonctionne pour moi:
la source
Pouvez-vous exécuter le code suivant ci-dessous. Cela a fonctionné dans Oracle.
la source
vous pouvez également obtenir par la requête ci-dessous
la source
Essayez cette requête:
la source
Suivant pour PrestoDb , où FirstField peut avoir plusieurs valeurs:
la source
Que diriez-vous d'utiliser une fonction de partitionnement COUNT OVER (PARTITION BY {column to group by}) dans SQL Server?
Par exemple, si vous souhaitez regrouper les ventes de produits par ItemID et que vous voulez un nombre de chaque ItemID distinct, utilisez simplement:
Si vous utilisez cette approche, vous pouvez laisser le GROUP BY en dehors de l'image - en supposant que vous souhaitiez renvoyer la liste entière (comme vous pourriez le faire pour signaler le regroupement où vous devez connaître le nombre total d'éléments que vous allez regrouper sans avoir pour afficher l'ensemble des données, c'est-à-dire Reporting Services).
la source
BandedItemCount
contiendra exactement? Cela diffère-t-il entre les lignes de sortie? Le demandeur recherche le nombre de niveaux de regroupement distincts.