Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy mogę grupować według zapytania SQL z funkcją okna?

Pierwszą rzeczą do zapamiętania jest to, że funkcje okienkowe (takie jak OVER() klauzula) praca nad wynikiem zapytania. To znaczy:serwer najpierw wykonuje zapytanie, a dopiero potem stosuje zdefiniowaną przez Ciebie funkcję okienkową.

Oznacza to, że możesz faktycznie użyć funkcji okienkowej i klauzuli group by w tym samym zapytaniu, ale musisz ją zahermetyzować w następujący sposób:

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

Zgadzam się jednak, że nie jest to dobre miejsce do korzystania z funkcji okienkowej. Propozycja Matta jest tutaj najlepsza (ROW_NUMBER() w CTE lub subquery , a następnie zaznaczając tylko żądane wiersze w głównym SELECT ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najczystszy sposób na zbudowanie ciągu SQL w Javie

  2. Monitorowanie SQL w SQL Developer

  3. Jak używać bieżącej daty w zapytaniu HQL z bazą danych Oracle?

  4. Tabela lub widok Oracle DB nie istnieje

  5. Jak zarejestrować podłączaną bazę danych (PDB) z nowo utworzonym LISTENEREM?