In postgresql per aggiungere un contatore al risultato di una query di tipo select è possibile utilizzare la funzione row_number(). L’uso di row_number() richiede la clausola over. Il formato generale per numerare le righe di una tabella visualizzata con una select query è :
SELECT
row_number() OVER() as rownum, table.*
FROM table;
es:
select row_number() OVER () as num, sp500.* FROM sp500 WHERE date > 01-01-2010 ORDER BY date;
Se è necessario che le i records siano ordinati si può utilizzare l’espressione OVER ( :
SELECT row_number() OVER ( ORDER BY field nulls last) as rownum, table.*
FROM table
ORDER BY field ;
es:
select row_number() OVER ( order by date nulls last ) as num, sp500.* FROM sp500 WHERE date > 01-01-2010 ORDER BY date;
Se si desidera inserire anche una colonna con il numero totale si può utilizzare la funzione count (*):
select row_number() OVER( order by date nulls last ) as num, count(*) over () as total; sp500.* FROM sp500 WHERE date > 01-01-2010 ORDER BY date;
Oracle utilizza row_number
Count()
In postgresql per contare i records che soddisfano una condizione data si utilizza count utilizzando la forma Sql standard. Ad esempio:
SELECT count(c.itemid) AS "Num." , c."Country" AS codec FROM contactsdownloads INNER JOIN contacts AS c ON (itemidcontacts) = c.itemid GROUP BY codec HAVING count (c.itemid) > 10
Formato generale
SELECT count(* ) over () , a.*
FROM table a ;
Nella query seguente viene effettuata la somma e il count a partire non da una tabella ma da un’altra query.
Questo consente di ottenere un count su due livelli di ragruppamento.
In pratica si effettua un primo raggruppamento dei records che ritornerà il primo conteggio quindi si elaboreranno questi dati con un secondo livello di raggruppamento. Qui si effetturà un nuovo count e si opererà la somma dei dati del primo count.
SELECT nameprd AS "Name Product" , sum(conta) AS "files downloaded", count (itemidcontacts) AS "N.Users" FROM (SELECT nameprd , count (itemid) AS conta, itemidcontacts FROM contactsdownloads WHERE createddate > '01-01-2007' GROUP BY nameprd, itemidcontacts ORDER BY conta DESC ) AS DL GROUP BY nameprd ORDER BY sum(conta) DESC;
…
Pagina riepilogativa
Query SQL – PostgreSQL
- SQL Join – Joincast su ;
- SQL Cast ;
- SQL Union Query ;
- SQL Count ;
- SQL Delete ;
- Postgresql : SQL UPDATE query ;
- postgresql : SQL SELECT query ;
- PostgreSQL SQL use CASE when … then … else ..END in SELECT
- postgresql : Eseguire una SQL UPDATE query di test ;
- PostgreSQL Total, Subtotal an alternative select multipli e TEMPORARY TABLE;
- Postgresq Numerare le righe di una select query – SQL count row_number
Postgresql
- postgresql check if table exist ;
- How escape single quote ‘ in postgresql ;
- SQL Concatenare due o più campi – String Concatenation ;
- Postgresql cancella record duplicati ;
- postgresql Elencare i campi di una tabella ;
- PostgreSQL CREATE TEMPORARY TABLE ;
- Postgresql Comandi utili ;
- Postgresql reset sequence ;
Query SQL – PostgreSQL
- SQL Join – Joincast su ;
- SQL Cast ;
- SQL Union Query ;
- SQL Count ;
- SQL Delete ;
- Postgresql : SQL UPDATE query ;
- postgresql : SQL SELECT query ;
- PostgreSQL SQL use CASE when … then … else ..END in SELECT
- postgresql : Eseguire una SQL UPDATE query di test ;
- PostgreSQL Total, Subtotal an alternative select multipli e TEMPORARY TABLE;
- Postgresq Numerare le righe di una select query – SQL count row_number
Alcune risorse presenti nel blog
- Postgresql running in parallel postgresql 9.1 and 8.4 on Centos 6.3 64 bit
- Upgrade postgresql 8.4.12 To postgresql 9.1.4 Debian
- Downgrade postgresql 9.1.4 to postgresql 8.4.12 – Centos 5
- Upgrade postgresql 8.4 to postgresql 9.1 Centos 5
- Upgrade postgresql server 8.4.3 8.4.12 – Centos 5
- Installare postgreSQL 8.4 in Centos 5
- Tunnel via ssh per gestire il server postgresql con pgAdmin
- Postgresql reset sequence
- Creare uno user di tipo read-only in un database postgresql
- Script per il backup dei database di postgresql
- Postgresql Windows 2008 server R2
- Postgresql server
DB
Creare eliminare database e tabelle
…