|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 654
|
[pg sql] una domanda su una query e una su un trigger
ciao!
1)come si fa a fare delle percentuali? per esempio ho una tabella con un 30 persone, con una colonna chiamata lavoro, e devo dire per ogni tipo di lavoro, la percentuale della gente che lo fà. se 5/10 fanno "operaio", allora la query mi deve dare come risultato 50%. ma il problema è che il /10 può aumentare o diminuire. 2)esiste da qualche parte una guida niubba che spieghi i trigger, fatti come funzioni e trigger. tipo: CREATE OR REPLACE FUNCTION abc_FX() RETURNS trigger AS $abc_FX$ BEGIN ......... END; $abc_FX$ LANGUAGE plpgsql; CREATE TRIGGER abc AFTER INSERT OR UPDATE ON tabella FOR EACH ROW EXECUTE PROCEDURE abc_FX() grazie!!!
__________________
Macbook Pro 15'' Mid 2015 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Per quanto riguarda la prima domanda, ho elaborato questa query.
Si presuppone che la tabella sia: ----------- | Mansioni | ----------- Nominativo mansione Codice:
SELECT A.mansione as "Mansione", count(A.mansione) * 100.0 / totale as "percentuale" FROM mansioni A, (SELECT count(*) as "totale" FROM mansioni) as B GROUP BY A.mansione,B.totale Franco Rossi, Ing Giuseppe Bianchi, Imp Antonio Verdi, Imp Con risultati Ing | 33.333333 Imp | 66.666666
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 654
|
complimenti, e grazie
__________________
Macbook Pro 15'' Mid 2015 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 654
|
perfetto, ha funzionato.
ora sto provando a rendere la cosa più precisa. dunque ammettiamo che ho una tabella così: CREATE TABLE persone ( cod_fiscale character varying(20) NOT NULL, nome character varying(20) NOT NULL, cognome character varying(30) NOT NULL, data_n date NOT NULL, tipo character(15), CONSTRAINT persone_pkey PRIMARY KEY (cod_fiscale) ) dove in tipo metto lavoratore, studente, niente. se io dovessi restituire le percentuali di persone (lavoratore+studenti, non separati) suddivisi in fasce di età (21-25, 26-30, ecc.), ma solo se sono lavoratori o studenti (quindi come totale devo guardare anche i niente)? cioè ho 3 lavoratori, 3 studenti, 3 niente. sarebbe 66,6%. però devo anche dividere questo 66,6 in rapporto alle fasce di età ah! quella di prima l'ho risolta così: now() - interval '31 years' < data_n AND now() - interval '26 years' e funziona!
__________________
Macbook Pro 15'' Mid 2015 Ultima modifica di IAmZak : 14-06-2008 alle 21:25. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
Figurati
Se posso suggerirti una cosa, il codice fiscale non è character varying, poiché è sempre di 16 caratteri. Quote:
Per restituire la percentuale di lavoratori+studenti, basta modificare la prima query che ti ho dato in questo modo: Codice:
SELECT A.non_niente * 100.0 / B.totale FROM (SELECT count(*) as "non_niente" FROM persone WHERE tipo<>'niente') as A, (SELECT count(*) as "totale" FROM persone) as B Codice:
SELECT A.non_niente * 100.0 / B.totale FROM (SELECT count(*) as "non_niente" FROM persone WHERE tipo<>'niente' AND now() - interval '25 years' < data_n AND now() - interval '21 years' > data_n) as A, (SELECT count(*) as "totale" FROM persone) as B
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:35.




















