2010-10-25 5 views
0

J'essaie de filtrer (ou de compter) les entreprises avec plusieurs personnes de contact à partir d'une table contenant un identifiant de société et un identifiant de personne. Actuellement, je fais ceci:Compte plusieurs apparences dans l'instruction DISTINCT avec deux paramètres?

SELECT DISTINCT company_id,person_id FROM mytable GROUP BY company_id ORDER BY company_id 

ainsi que

SELECT DISTINCT company_id FROM mytable 

La première requête retourne quelques lignes plus. Il est donc évident qu'il existe des entreprises avec plusieurs personnes de contact. À partir du nombre de lignes différentes entre les deux requêtes, je peux même dire combien d'entre eux. Bien que j'aimerais savoir comment je peux sélectionner exactement les entreprises qui ont plus d'une personne assignée.

Merci d'avance pour toute aide!

Répondre

5

Que pensez-vous de cela?

SELECT company_id, COUNT(DISTINCT person_id) 
FROM mytable 
GROUP BY company_id 
HAVING COUNT(DISTINCT person_id) > 1 
+1

et généralement je 'ORDER BY COUNT (DISTINCT person_id) desc'. – Benoit

+0

wow, c'était rapide. "Vous pouvez accepter la réponse dans 2 minutes". Cela ne m'est jamais arrivé auparavant. Ne sachant pas d'avoir empêché la recrue de trouver l'évidence évidente. Thx eumiro et Benoit! –

0
SELECT 
    company_id 
FROM 
    mytable 
GROUP BY 
    company_id 
HAVING 
    COUNT(person_id) > 1 
ORDER BY 
    company_id