Postagens populares

quarta-feira, 7 de julho de 2010

WITH CLAUSE

Lendo o manual do postgreSQL (8.4) descobri algo muito útil: a cláusula WITH.

Com ela você pode selecionar dados a partir de um outro select, algo como uma view "on the fly" ou uma tabela temporária, só se auto "destrói" após o uso. Já imaginei mil aplicações para isto, você consegue? Comentem...

Exemplo basicão:

WITH regional_sales AS (
        SELECT region, SUM(amount) AS total_sales
        FROM orders
        GROUP BY region
     ), top_regions AS (
        SELECT region
        FROM regional_sales
        WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales)
     )
SELECT region,
       product,
       SUM(quantity) AS product_units,
       SUM(amount) AS product_sales
FROM orders
WHERE region IN (SELECT region FROM top_regions)
GROUP BY region, product;
 
 
Isto poderia ser escrito sem WITH, mas seria mais custoso pois precisaria de mais níveis de sub-selects.
Referência postgreSQL

Nenhum comentário:

Postar um comentário

Comenta aí galera, vamos debater os assuntos!

Magazine Luiza