View Full Version : interrogazione sql
data la seguente interrogazione:
SELECT cf, COUNT(*) FROM miatabella GROUP BY cf
che mi ritorna una nuova relazione fatta così:
1
3
5
7
come si fa a farsi ritornare solo il valore 7 e non tutti i valori ?
come si fa a farsi ritornare solo il valore 7 e non tutti i valori ?SELECT cf, COUNT(*) FROM miatabella GROUP BY cf HAVING COUNT(*)=7
SELECT cf, COUNT(*) FROM miatabella GROUP BY cf HAVING COUNT(*)=7
scusa, forse ti ho depistato ma il valore 7 l'ho specificato come esempio, ma nella realtà non è noto a priori il valore massimo
prova ad aggiungere ORDER BY cf DESC LIMIT 1;
trallallero
21-02-2007, 14:57
scusa, forse ti ho depistato ma il valore 7 l'ho specificato come esempio, ma nella realtà non è noto a priori il valore massimo
SELECT cf, COUNT(*) FROM miatabella GROUP BY cf HAVING COUNT(*)=&n
EDIT:
se invece vuoi solo quelli con il count(*) massimo fai:
SELECT cf, COUNT(*)
FROM miatabella
GROUP BY cf
HAVING COUNT(*) =
(
SELECT MAX(COUNT(*))
FROM miatabella
GROUP BY cf
)
non l'ho testata ma dovrebbe andare ;)
SELECT cf, COUNT(*) FROM miatabella GROUP BY cf HAVING COUNT(*)=&n
EDIT:
se invece vuoi solo quelli con il count(*) massimo fai:
SELECT cf, COUNT(*)
FROM miatabella
GROUP BY cf
HAVING COUNT(*) =
(
SELECT MAX(COUNT(*))
FROM miatabella
GROUP BY cf
)
non l'ho testata ma dovrebbe andare ;)
ERROR: aggregate function calls may not be nested
le funzioni aggregate non possono essere nidificate :confused:
trallallero
22-02-2007, 07:21
ERROR: aggregate function calls may not be nested
le funzioni aggregate non possono essere nidificate :confused:
1 select Y, count(*)
2 from prova
3 group by Y
4 having count(*) =
5* ( select max(count(*)) from prova group by Y)
SQL> /
Y COUNT(*)
---------- ----------
ciccio 4
a me va. Che db hai ?
funziona con una leggera modifica al tuo codice :)
SELECT cf, COUNT(*)
FROM miatabella
GROUP BY cf
HAVING COUNT(*) >= ALL
(
SELECT COUNT(*)
FROM miatabella
GROUP BY cf
)
trallallero
22-02-2007, 09:33
uso postgres
non conosco :)
ragazzi un altra dritta
CLIENTE (Nr.telefono, Nome, Indirizzo)
ORDINE (Nr.telefono, Codice-Pizza, Codice-Operatore, Data, Costo)
PIZZA (Codice-Pizza, Nome, Prezzo)
Si richiede di formulare in SQL quanto segue:
determinare per ogni operatore e ogni pizza il costo totale degli ordini effettuati;
SELECT codicepizza, sum(costo) FROM ORDINE GROUP BY codicepizza;
e con questa query estraggo il costo totale per ogni tipo di pizza venduta ma, come diamine ci inserisco l'operatore ?
La query è anche sbagliata perchè nella somma non tiene conto di operatori differenti :muro:
trallallero
26-02-2007, 08:36
Se ti puó aiutare In Oracle sarebbe qualcosa del genere, ma mi sa che manca qualcosa (non posso testare)
SELECT
O.operatore OPERATORE,
P.nome PIZZA ,
SUM(O.costo) TOTALE
FROM
ordine O,
pizza P
WHERE
O.codicepizza = P.codicepizza
GROUP BY
O.operatore,
O.telefono,
P.nome
;
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.