sql >> Databáze >  >> RDS >> Oracle

Mohu seskupit podle v dotazu SQL s funkcí okna?

První věc, kterou si zapamatujte, je funkce v okně (jako OVER() klauzule) pracovat na výsledku dotazu. To znamená:Server nejprve provede dotaz a teprve poté aplikuje vámi definovanou funkci v okně.

To znamená, že můžete skutečně použít funkci v okně a seskupit klauzuli ve stejném dotazu, ale musíte to zapouzdřit takto:

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

Souhlasím však s tím, že toto není dobré místo pro použití funkce okna. Zde je nejlepší Mattův návrh (ROW_NUMBER() v CTE nebo subquery a poté vyberte pouze požadované řádky v hlavním SELECT ).



  1. Porovnejte data v T-SQL, ignorujte časovou část

  2. REGEX, chcete-li vybrat n-tou hodnotu ze seznamu, s možností null

  3. Vytvořit aliasy hromadně?

  4. Jak exportovat velké množství dat pomocí sql developer - Oracle