2009-09-10 6 views
0

Un fragment partiel de ma sortie se présente comme suit:Aide Groupement SQL

CNEP P000000025 1 
CNEP P000000029 1 
NONMAT P000000029 1 
CNEP P000000030 1 
CWHCNP P000000030 1 
MSN P000000030 1 

Chaque ligne représente un terme qu'un étudiant est dans un programme particulier. À l'heure actuelle, je regroupe les informations pour m'assurer que chaque identificateur d'utilisateur ne correspond qu'une fois à un programme d'études partielles.

Notez que "P000000029" et "P000000030" ont des entrées multiples.

J'aimerais ne montrer que les étudiants qui ont plusieurs types de programmes d'études dans le système.

Répondre

2

En supposant que les columnbs sont nommés programmes et userid (aucune idée de ce que la troisième colonne ;-), vous pouvez obtenir les userids d'intérêt par l'intermédiaire, par exemple:

select userid 
from thetable 
group by userid 
having count(distinct curriculum) > 1 

et d'autres informations sur les userids choisie de via in, jointures et opérations similaires comme d'habitude.

+0

Je ne l'ai jamais considéré comme un distinct dans le compte ("avoir compte (programme distinct)> 1"). Est-ce seulement nécessaire quand un pairage d'utilisateur/programme donné apparaît plus d'une fois dans le tableau? – Mayo

+0

@Mayo, oui, c'est vrai. –

0

Je ne pense pas que vous montriez des informations sur les étudiants dans vos données d'échantillon. Mais vous pouvez toujours l'utiliser pour trouver des groupes avec des multiples (exemple de code SQL Server, mais requête wrok à peu près partout):

DECLARE @YourTable table (col1 varchar(10), col2 char(10), col3 int) 

INSERT INTO @YourTable VALUES ('NEP','P000000025',1) 
INSERT INTO @YourTable VALUES ('CNEP','P000000029',1) 
INSERT INTO @YourTable VALUES ('NONMAT','P000000029',1) 
INSERT INTO @YourTable VALUES ('CNEP','P000000030',1) 
INSERT INTO @YourTable VALUES ('CWHCNP','P000000030',1) 
INSERT INTO @YourTable VALUES ('MSN','P000000030',1) 

SELECT 
    col1,COUNT(*) AS CountOf 
    FROM @YourTable 
    GROUP BY col1 
    HAVING COUNT(col2)>1 

SORTIE

col1  CountOf 
---------- ----------- 
CNEP  2 

(1 row(s) affected) 
+0

Je suis à peu près sûr que la 2ème colonne, par exemple, P000000025, est l'ID de l'étudiant. –