sql >> Database teknologi >  >> RDS >> Oracle

Kan jeg gruppere efter i SQL-forespørgsel med vinduesfunktion?

Den første ting at huske er, at vinduesfunktioner (som OVER() klausul) arbejde på resultatet af forespørgslen. Det vil sige:Server udfører først forespørgslen og anvender først derefter vinduesfunktionen som defineret af dig.

Dette betyder, at du faktisk kan bruge vinduesfunktion og gruppe for klausul i den samme forespørgsel, men du skal indkapsle det sådan:

SELECT department_id,
       min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;

Jeg er dog enig i, at dette ikke er et godt sted at bruge vinduesfunktion. Matts forslag er bedst her (ROW_NUMBER() i CTE eller subquery , og vælg derefter kun de ønskede rækker i hoved SELECT ).



  1. MS Access Corruption Del 2:Bedste praksis for forebyggelse og genopretning

  2. MYSQL Update Trigger få opdateret række-id

  3. MySQL MariaDB – Forespørgsel ved hjælp af Temp-tabel

  4. Oracle-lagret procedure med parametre for IN-klausul