Très bien, ce que j'essaie de faire est d'effectuer différents COUNT() sur la même table en fonction de différents critères sans requêtes imbriquées (efficacité) ou sous-requêtes (donc peut être transformé en vue). Est-ce possible? Exemple: une table a une colonne de date - la requête doit être capable de produire un compte du nombre de lignes avant & après une date constante.mySQL: plusieurs COUNT() basés sur des critères différents
11
A
Répondre
28
Vous utilisez MySQL, vous pouvez donc profiter de sa fonctionnalité qu'une expression booléenne évalue à 0 pour false et 1 pour vrai. Le SUM()
de 1 est égal à COUNT()
où l'expression est vraie.
SELECT SUM(date_column < '2009-08-21') AS prior_to_date,
SUM(date_column > '2009-08-21') AS after_date
FROM MyTable;
PS: Ne pas essayer ceci sur d'autres marques de base de données qui confirment le comportement standard SQL, à savoir une expression booléenne donne un booléen, pas 0 ou 1 entier.
Questions connexes
- 1. COUNT Mysql (*) sur plusieurs tables
- 2. MySQL: Comment combiner plusieurs requêtes SELECT, en utilisant différents critères WHERE sur la même table?
- 3. Comment modéliser les différents critères?
- 4. Tri sur plusieurs champs avec des critères dans Grails
- 5. Filtre de table JQuery sur plusieurs critères
- 6. performances Mysql et Count (*)
- 7. MySql Count Query
- 8. critères Hibernate recherche sur les propriétés différentes d'objets différents
- 9. MySQL Groupe COUNT multiple
- 10. MySQL COUNT() et nulls
- 11. plusieurs critères de recherche
- 12. Possibilité de comparer COUNT (*) à partir de plusieurs lignes sur MySQL?
- 13. Y at-il un moyen dans Linq d'appliquer différents calculs basés sur des conditions différentes
- 14. Rapports basés sur un formulaire
- 15. Tri d'objets basés sur des valeurs Double?
- 16. références d'assemblages conditionnels basés sur la solution
- 17. Comment échanger des contrôles basés sur une propriété de dépendance?
- 18. JQuery Select élément basé sur des critères
- 19. Critères NHibernate sur lazyload
- 20. Besoin COUNT à l'aide LEFT JOIN MYSQL
- 21. SQL Query to Count() plusieurs tables
- 22. HQL 1 à plusieurs count() question
- 23. MySQL Select - Combiner COUNT avec GROUP_CONCAT
- 24. MySQL Math et COUNT (*) dans LIMITE
- 25. Modèle pour spécialiser des modèles basés sur l'héritage possible?
- 26. Ajouter les résultats de plusieurs requêtes COUNT
- 27. Tri fréquent d'une liste <T> sur plusieurs critères en utilisant des méthodes d'extension?
- 28. MYSQL IN ou plusieurs conditions
- 29. Signaux de carte Qt basés sur la valeur du paramètre
- 30. Comment revenir à zéro en utilisant Count() avec plusieurs tables
Nice - ça marche très bien. Dans d'autres bases de données qui utilisent la syntaxe SQL, je suppose que le fait d'avoir une IF dans la SUM retournant 1 ou 0 étant donné que la condition devrait fonctionner aussi bien. – dborba
Oui. Mais utilisez des expressions 'CASE' si vous voulez être le plus portable. Il n'y a pas de 'IF()' en SQL standard. –
J'ai essayé avec plusieurs et séparés. Le problème que j'ai trouvé si je mets une instruction select séparée avec la clause where nécessaire, alors mysql utilise l'index, mais lorsqu'il est combiné, il n'utilise pas l'index. Vérifié en utilisant expliquer. –