2017-09-20 6 views
0

J'ai une table avec les colonnes suivantes:MySQL - DISTINCT AYANT SUM

  • customerID - ID client avec plusieurs lignes avec la même ID
  • actionVal-0 ou 1

Je veux pour compter combien de clients (customerID) ont plus d'une ligne avec (actionVal) égal à 1

Je suis venu avec ce S déclaration QL sans chance ...

SELECT customerID, SUM(actionVal), COUNT(DISTINCT customerID) as total_C 
FROM table1 
GROUP BY customerID 
HAVING SUM(actionVal) > 1 

Le résultat que je suis à la recherche serait [ 'total_C']

+0

Et pourquoi ça ne marche pas? –

Répondre

1

Close, il vous suffit de compter les clients de votre recherche:

SELECT COUNT(*) as total_C 
FROM (
    SELECT customerID, SUM(actionVal) 
    FROM table1 
    GROUP BY customerID 
    HAVING SUM(actionVal) > 1 
) as q; 
+0

merci @slaakso –

1

Vous devrez compter les lignes renvoyées par votre requête. Quelque chose comme ça.

SELECT COUNT(1) FROM (
SELECT customerID, SUM(actionVal) as act_sum 
FROM table1 
GROUP BY customerID 
HAVING act_sum > 1 
) AS tab 

J'espère que cela a aidé.

+0

merci @vijayrathore –