««« | »»»
PostgreSQL 8.4: window functions
Le window functions permettono di usare valori aggregati direttamente sulle singole righe e senza dover utilizzare la clausola GROUP BY.
Prima della versione 8.4 avrei dovuto scrivere una cosa del genere (usando l’esempio in documentazione):
SELECT
depname,
empno,
salary, avg_salary
FROM
empsalary
JOIN (
SELECT
depname,
avg(salary) as avg_salarys
FROM empsalary
GROUP BY depname
) AS avg_salaries using(depname);
Oltre a semplificare le query, possiamo anche andare oltre e, con la funzione rank() “classificare” i record della tabella in base al loro salario o calcolare dei totali progressivi; il tutto espresso in modo molto naturale.
Se penso alle contorsioni da fare in SQL “normale” (o comunque una versione sufficientemente vecchia) per fare cose del genere…
Per proseguire
Commenti e trackback sono disabilitati.