2017-09-20 3 views
0

Ich habe eine Tabelle mit den folgenden Spalten:MySQL - DISTINCT mit SUM MIT

  • customerID - Kunden-IDs mit mehreren Zeilen mit derselben ID
  • actionVal-0 oder 1

Ich mag um zu zählen, wie viele Kunden (customerID) mehr als eine Zeile mit (actionVal) haben, gleich 1

Ich kam mit dieser S QL-Anweisung ohne Glück ...

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

Das Ergebnis denn ich bin auf der Suche wäre [ ‚total_C‘]

+0

Und warum funktioniert es nicht? –

Antwort

1

schließen, müssen Sie nur die Kunden von Ihrer Anfrage zählen:

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

danke @slaakso –

1

Sie müssen die von Ihrer Abfrage zurückgegebenen Zeilen zählen. So etwas wie das.

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

Ich hoffe, das hat geholfen.

+0

danke @vijayrathore –