Il semble que MySQL
cela ne prenne pas en charge les fonctions de fenêtre.
Par exemple, le simple: COUNT(*) OVER() AS cnt
ne fonctionne pas.
Ce que je ne sais pas, c'est si cela s'applique également à la version commerciale (je suppose que la version communautaire est un sous-ensemble limité).
Sinon, comment contourner cette fonctionnalité manquante?
mysql
window-functions
Cratyle
la source
la source
Réponses:
MySQL ne prend pas en charge les fonctions de fenêtre (*). Il y a ce que nous appelons "la fonction de fenêtre d'un pauvre" sous la forme de GROUP_CONCAT () .
Il existe de nombreuses astuces
GROUP_CONCAT
pour émuler les fonctions de la fenêtre. Ils ne sont pas aussi jolis (syntaxiquement) et sont parfois trop limités. J'en ai écrit quelques-uns. Voir mon article de blog se plaignant des fonctions de fenêtre manquantes et des liens vers diverses solutions basées surGROUP_CONCAT
.En particulier, Sélection d'une donnée de colonne non agrégée spécifique dans GROUP BY et SQL: sélection des N premiers enregistrements par groupe, une autre solution pourrait vous intéresser et pourrait vous donner un coup de pouce.
Choses à noter sur
GROUP_CONCAT()
:DISTINCT
ORDER BY ... ASC/DESC
SEPARATOR
(*) La prise en charge des fonctions de fenêtre a été ajoutée dans MySQL 8
la source
Il faut vraiment noter que MariaDB 10.2 (sortie en mai 2017) a des fonctions de fenêtre . C'est certainement une avenue à suivre si vous avez besoin de MySQL et des fonctions de fenêtre.
la source