Mondi su mondi, sistemi di sistemi.

PostgreSQL 8.4: window functions

Le win­dow func­tions per­met­tono di usare valori aggre­gati diret­ta­mente sulle sin­gole righe e senza dover uti­liz­zare la clau­sola GROUP BY.

Prima della ver­sione 8.4 avrei dovuto scri­vere 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 sem­pli­fi­care le query, pos­siamo anche andare oltre e, con la fun­zione rank() “clas­si­fi­care” i record della tabella in base al loro sala­rio o cal­co­lare dei totali pro­gres­sivi; il tutto espresso in modo molto naturale.

Se penso alle con­tor­sioni da fare in SQL “nor­male” (o comun­que una ver­sione suf­fi­cien­te­mente vec­chia) per fare cose del genere…

Per proseguire

Commenti e trackback sono disabilitati.