sql >> Databasteknik >  >> RDS >> Oracle

Kan jag gruppera efter i SQL-fråga med fönsterfunktion?

Det första att komma ihåg är att fönsterfunktioner (som OVER() klausul) arbeta med resultatet av frågan. Det vill säga:Servern kör först frågan och först därefter tillämpar den fönsterfunktion som definierats av dig.

Det betyder att du faktiskt kan använda fönsterfunktion och grupp för sats i samma fråga, men du måste kapsla in det så här:

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

Jag håller dock med om att detta inte är ett bra ställe att använda fönsterfunktion. Matts förslag är bäst här (ROW_NUMBER() i CTE eller subquery , och välj sedan endast de önskade raderna i huvud SELECT ).



  1. MySQL:returnera uppdaterade rader

  2. Välja/casta utdata som heltal i SQL

  3. SQL Server Databas Snapshots -1

  4. Bäst att använda * när du anropar många fält i mysql?