SQL CONTE* GRUPPO più grande,

Voglio selezionare le chiavi distinte con l’avvenimento il numero di query sembra functionate:

SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
FROM ItemMetaData 
GROUP BY ItemMetaData.KEY 
ORDER BY count(*) desc;

Ma voglio anche filtrare questi risultati, il che significa voglio solo dove count(*) è superiore a 2500 così solo più grande di 2500 occorrenza verrà mostrato, ma:

SELECT * 
FROM 
(
    SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
    FROM ItemMetaData 
    GROUP BY ItemMetaData.KEY 
    ORDER BY count(*) desc
) as result WHERE count(*)>2500;

Purtroppo questa query restituisce un errore di sintassi. Mi potete aiutare a realizzare il mio fabbisogno?

  • Qualcuno ha appena cancellato il post voglio Accettare, per favore, ha scritto di nuovo e mi accettano”SELECT * FROM ( SELECT ItemMetaData.CHIAVE, ItemMetaData.VALORE, count(*) ‘ItemsCount’ DA ItemMetaData GRUPPO ItemMetaData.CHIAVE ) sub DOVE sub.ItemsCount > 2500 ORDINE DA sub.ItemsCount desc;” Avendo anche un lavoro e, naturalmente, tutti gli altri di rispondere a votare, grazie, ma…
InformationsquelleAutor czupe | 2012-07-09

 

4 Replies
  1. 72

    Clausola HAVING per aggregati

    SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*) 
    FROM ItemMetaData 
    Group By ItemMetaData.KEY, ItemMetaData.VALUE
    HAVING count(*) > 2500
    ORDER BY count(*) desc;
  2. 9

    Si dovrebbe usare having con le funzioni di gruppo invece di where. E. g.:

    select ..., count(*) from ... group by ... having count(*) > 2500;
  3. 7

    Non è necessario utilizzare una sottoquery – è sufficiente utilizzare un avere clausola invece di where clausola di filtro da parte di un aggregato di colonna.

    SELECT
    ItemMetaData.KEY, ItemMetaData.VALUE, count(*)
    FROM ItemMetaData
    GROUP BY ItemMetaData.KEY
    HAVING count(*) > 2500
    ORDER BY count(*) desc
  4. 1

    Ecco la spiegazione: WHERE clausola introduce una condizione in singole righe; HAVING clausola introduce una condizione di aggregazioni.

    Utilizzare WHERE prima GROUP BY e HAVING dopo GROUP BY. Non è obbligatorio, ma helpuful nella maggior parte dei casi.

    SELECT 
           ItemMetaData.KEY, ItemMetaData.VALUE, СOUNT(*) 
    FROM  ItemMetaData 
    GROUP BY
           ItemMetaData.KEY, ItemMetaData.VALUE
    HAVING СOUNT(*) > 2500
    ORDER BY СOUNT(*) DESC;

Lascia un commento