2010-06-29 5 views
4

Quelqu'un peut-il convertir cet anglais en SQL J'ai essayé plusieurs choses mais pas de chance.SQL Select Count (person_id)> 3 De

SELECT CASE QUAND COUNT (person_id)> 3 THEN fin person_id FROM table

Je tente d'obtenir seulement les person_id (s) qui se produisent> 3 fois dans le tableau.

Répondre

9

Utilisation:

SELECT t.person_id 
    FROM TABLE t 
GROUP BY t.personid 
    HAVING COUNT(t.personid) > 3 

Vous ne pouvez pas utiliser des fonctions d'agrégation, ou des alias de colonnes à colonnes dérivées en utilisant des fonctions d'agrégation, dans la clause WHERE. Ceux-ci ne peuvent être utilisés que dans la clause HAVING, ce qui nécessite de définir une clause GROUP BY (si elle n'existe pas déjà).

Je ne recommande pas d'utiliser l'alias de colonne dans les clauses GROUP BY ou HAVING - il y a un risque que la requête ne soit pas portable vers d'autres bases de données. SQL Server et MySQL sont les seules bases de données à ma connaissance qui prennent en charge les alias de colonne dans les clauses GROUP BY ou HAVING.

+0

vous êtes super! – Daniel

3
SELECT 
    person_id 

FROM table 

GROUP BY person_id 

HAVING COUNT(*) > 3