MySQL e funzioni della finestra


30

Sembra che MySQLnon supporti le funzioni della finestra.
Ad esempio, il semplice: COUNT(*) OVER() AS cntnon funziona.
Quello che non sono sicuro è se questo si applica anche alla versione commerciale (suppongo che la versione della comunità sia un sottoinsieme limitato).
In caso contrario, come si aggira questa funzione mancante?


3
L'edizione comunitaria di MySQL Server non è un sottoinsieme limitato in alcun senso significativo. Le differenze riguardano componenti aggiuntivi e plug-in che non influiscono sulla funzionalità principale.
Michael - sqlbot,

Dai

In realtà, MySQL9 lo supporta. Ho usato i panda invece che tipo di schifo.
Andrew Scott Evans,

1
MySQL 8 supporta la funzione finestra. Per riferimento: dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan

MySQL supporta le funzioni della finestra dalla versione 8.0. Questo link potrebbe aiutare.
Hamid Mohayeji,

Risposte:


36

MySQL non supporta le funzioni di Windows (*). C'è ciò che chiamiamo "funzione finestra di un uomo povero" sotto forma di GROUP_CONCAT () .

Esistono molti trucchi GROUP_CONCATper emulare le funzioni della finestra. Non sono così belli (sintatticamente) e talvolta sono troppo limitati. Ne ho scritti alcuni. Vedi il mio post sul blog che si lamenta delle funzioni mancanti della finestra e si collega a varie soluzioni basate su GROUP_CONCAT.

In particolare, Selezione di uno specifico dato di colonna non aggregato in GROUP BY e SQL: selezionando i primi N record per gruppo, un'altra soluzione potrebbe essere interessante per te e potrebbe darti un calcio d'inizio.

Cose che dovresti notare su GROUP_CONCAT():

  • Poter usare DISTINCT
  • Poter usare ORDER BY ... ASC/DESC
  • Può impostare SEPARATOR
  • Come qualsiasi funzione di aggregazione, ignora i valori NULL; molti trucchi su questo.

(*) Il supporto per le funzioni della finestra è stato aggiunto in MySQL 8


MySQL supporta le funzioni della finestra a partire dalla versione 8
Max

GROUP_CONCAT non è una funzione di finestra, è una funzione di set ordinata.
SQLRaptor,

1
@SQLRaptor nessuno ha affermato che lo è.
ypercubeᵀᴹ

11

Va davvero notato che MariaDB 10.2 (rilasciato nel 2017 a maggio) ha funzioni di finestra . Questa è certamente una strada da perseguire se hai bisogno di MySQL e delle funzioni della finestra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.