MySQL i funkcje okna


30

Wygląda na to, że MySQLnie obsługuje funkcji okna.
Np. Prosty: COUNT(*) OVER() AS cntnie działa.
Nie jestem pewien, czy dotyczy to również wersji komercyjnej (zakładam, że wersja społeczności ma ograniczony podzbiór).
Jeśli nie, w jaki sposób można obejść tę brakującą funkcję?


3
Edycja społeczności MySQL Server nie jest ograniczonym podzbiorem w żadnym sensownym znaczeniu. Różnice dotyczą dodatków i wtyczek, które nie wpływają na podstawową funkcjonalność.
Michael - sqlbot 17.04.13

Zobacz to obejście tutaj i tutaj
StuartLC

W rzeczywistości MySQL9 obsługuje to. Zamiast tego używam pand, które są do bani.
Andrew Scott Evans,

1
MySQL 8 obsługuje funkcję okna. Dla odniesienia: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan

MySQL obsługuje funkcje okien od wersji 8.0. Ten link może pomóc.
Hamid Mohayeji

Odpowiedzi:


36

MySQL nie obsługuje funkcji okien (*). Istnieje coś, co nazywamy „funkcją okna biedaka” w postaci GROUP_CONCAT () .

Istnieje wiele sztuczek GROUP_CONCATsłużących do emulacji funkcji okna. Nie są tak ładne (składniowo) i czasami są zbyt ograniczone. Napisałem kilka. Zobacz mój post na blogu narzekający na brakujące funkcje okna i linki do różnych rozwiązań opartych na GROUP_CONCAT.

W szczególności, wybierając konkretne niezagregowane dane kolumn w GROUP BY i SQL: wybierając najwyższe N ​​rekordów na grupę, inne rozwiązanie może być dla Ciebie interesujące i może dać Ci dobry start.

Rzeczy, na które należy zwrócić uwagę GROUP_CONCAT():

  • Można używać DISTINCT
  • Można używać ORDER BY ... ASC/DESC
  • Można ustawić SEPARATOR
  • Jak każda funkcja agregująca - odrzuca wartości NULL; wiele sztuczek na ten temat.

(*) Dodano obsługę funkcji okien w MySQL 8


MySQL obsługuje funkcje okien od wersji 8
Max

GROUP_CONCAT nie jest funkcją okna, to funkcja zestawu uporządkowanego.
SQLRaptor,

1
@SQLRaptor nikt nie twierdził, że tak jest.
ypercubeᵀᴹ

11

Naprawdę należy zauważyć, że MariaDB 10.2 (wydany w maju 2017 r.) Ma funkcje okien . Z pewnością jest to jedna z możliwości, jeśli potrzebujesz MySQL i funkcji okna.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.