MySQL und Fensterfunktionen

30

Es scheint, dass MySQLWindows-Funktionen nicht unterstützt.
ZB das einfache: COUNT(*) OVER() AS cntfunktioniert nicht.
Ich bin mir nicht sicher, ob dies auch für die kommerzielle Version gilt (ich gehe davon aus, dass die Community-Version eine begrenzte Teilmenge ist).
Wenn nicht, wie kann man dieses fehlende Feature umgehen?

Cratylus
quelle
3
Die Community Edition von MySQL Server ist in keiner Weise eine begrenzte Untermenge. Die Unterschiede liegen in Add-Ons und Plug-Ins, die sich nicht auf die Kernfunktionalität auswirken.
Michael - Sqlbot
Schauen Sie sich diese Problemumgehung hier und hier an
StuartLC
Eigentlich unterstützt MySQL9 es. Ich habe stattdessen Pandas benutzt, die scheiße sind.
Andrew Scott Evans
1
MySQL 8 unterstützt die Fensterfunktion. Als Referenz: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan
MySQL unterstützt Fensterfunktionen seit Version 8.0. Dieser Link könnte helfen.
Hamid Mohayeji

Antworten:

36

MySQL unterstützt keine Fensterfunktionen (*). Es gibt eine sogenannte "Fensterfunktion eines armen Mannes" in Form von GROUP_CONCAT () .

Es gibt viele Tricks GROUP_CONCAT , um Fensterfunktionen zu emulieren. Sie sind nicht so hübsch (syntaktisch) und manchmal zu begrenzt. Ich habe ein paar geschrieben. In meinem Blogbeitrag beschwere ich mich über die fehlenden Fensterfunktionen und verlinke auf verschiedene Lösungen basierend auf GROUP_CONCAT.

Insbesondere Auswählen bestimmter nicht aggregierter Spaltendaten in GROUP BY und SQL: Durch Auswahl der Top-N-Datensätze pro Gruppe könnte eine andere Lösung für Sie von Interesse sein und Ihnen einen Kickstart geben.

Dinge, die Sie beachten sollten GROUP_CONCAT() :

  • Kann benutzen DISTINCT
  • Kann benutzen ORDER BY ... ASC/DESC
  • Kann einstellen SEPARATOR
  • Wie bei jeder Aggregationsfunktion werden NULL-Werte verworfen. viele Tricks dazu.

(*) Unterstützung für Fensterfunktionen wurde in MySQL 8 hinzugefügt

Shlomi Noach
quelle
MySQL unterstützt Fensterfunktionen ab Version 8
Max.
GROUP_CONCAT ist keine Fensterfunktion, sondern eine geordnete Set-Funktion.
SQLRaptor
1
@ SQLRaptor niemand behauptet es ist.
ypercubeᵀᴹ
11

Es sollte wirklich beachtet werden, dass MariaDB 10.2 (veröffentlicht im Mai 2017) Fensterfunktionen hat . Dies ist sicherlich eine Möglichkeit, wenn Sie MySQL- und Fensterfunktionen benötigen.

chx
quelle