2016-06-14 10 views
1

Ich schaue auf den vorherigen Post auf "Division mit count" und scheint Probleme in der Division durch Teil zu haben. Unten ist meine Abfrage, ich bekomme die Ergebnisse, aber die Ergebnisse sind falsch, weil die "dividiere durch" mit count(*) scheint die Anzahl aller Geschäfte und nicht Gruppe von den Geschäften zu verwenden.Division mit MySQL mit Gruppe Von

Was mich interessiert, ist die "dividiere durch" sollte auch auf die Anzahl der Zählungen für das bestimmte Geschäft basieren.

:

Store A has got total count of 7 rows 
Store B has got total count of 12 rows 

die Division sollte

XX/7 for Store A 
XX/12 for Store B 

Beispieldaten sein: mein zweiter Teil der Abfrage für die Division durch sollte so etwas wie "select count(*) *100 group by stores"

SELECT store, CAST((( 
    SUM(CASE WHEN SCORE BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 - 
    SUM(CASE WHEN SCORE BETWEEN 0 AND 6 THEN 1 ELSE 0 END))/COUNT(*) * 100) AS signed) AS NPS 
FROM npsnetsuite 
WHERE SCORE IS NOT NULL group by STORE; 

Beispiel sein

Date  Store Score Case When between 9-10 case when 0-6 
18/04/2016 A   9     1 
20/04/2016 A   8  
26/04/2016 A   10     1 
29/04/2016 A   8  
30/04/2016 A  10     1 
01/05/2016 A  10     1 
06/05/2016 A  8  
11/05/2016 A  10     1 
23/05/2016 A  10     1 
04/06/2016 A   6        1 
09/06/2016 A   8  
08/06/2016 A  10     1 
05/04/2016 B   4        1 
07/04/2016 B  10     1 
18/04/2016 B  10     1 
27/04/2016 B   8  
01/05/2016 B   9     1 
13/05/2016 B  10     1 
13/06/2016 B   1        1 
14/06/2016 B   6        1 
Daten

Probe: Sample Data

gewünschte Ausgabe:

Store A 50 
Store B 13 

Also im Grunde Store A is (7-1)/12 * 100 = 50.

7 ist die Zählung, wenn Fall, wenn für Partitur 9 to 10 und 1 die Zählung ist, wenn Fall, wenn für die Partitur 0 to 6. Also der erste Teil, den ich richtig verstanden habe, ist die Anzahl der Punkte 9-10 MINUS Anzahl der Punkte 0 bis 6 für jeden Laden. Und ich muss durch die Anzahl der Zählung für diese bestimmten Geschäfte dividieren. Wie im obigen Beispiel enthalten Store A 12 Zeilen und Store B 8 Zeilen. Meine aktuelle Abfrage zählt die Anzahl aller Geschäfte.

Danke

+2

Einige Probe Eingang und Ausgang einen langen Weg gehen würde hier. –

+0

Veröffentlichen Sie das Datenbeispiel, das Sie verwenden. – Shaharyar

+0

Gewünschte Ausgabe: Store A Store B \t 13 so im Grunde Store A sollte (7-1)/12 sein, wobei 12 ist der gesamte Store zu Store A. – ll2016

Antwort

0

Danke, alle ~ schließlich die Ergebnisse nach oben Ausgabe durch diese Abfrage :) bekommen verwaltet:

select a.STORE, round((a.count_one/b.count_two) * 100) as final_count from 
(select SCORE, STORE, SUM(CASE WHEN SCORE BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 - 
    SUM(CASE WHEN SCORE BETWEEN 0 AND 6 THEN 1 ELSE 0 END) as count_one from npsnetsuite where SCORE IS NOT NULL group by STORE) a, 
(select SCORE, STORE, count(*) as count_two from npsnetsuite where SCORE IS NOT NULL group by STORE) b 
where a.STORE = b.STORE and a.SCORE IS NOT NULL; 
+0

Sie vorherige Abfrage gab mir auch die gleichen Ergebnisse Ihre diese Abfrage gibt. Ich weiß nicht, warum du dich so viel Mühe gegeben hast, eine weitere Anfrage zu schreiben. Und dieses ist wirklich sehr schlecht, verglichen mit dem ersten in der Leistung. – Shaharyar

+0

OMG, du hast recht Shah !!! Die erste Abfrage ergab das gleiche Ergebnis. Ich muss verwirrt gewesen sein ... sorry. Ich denke, ich war über besorgt, warum ich keine, Store = b.store hatte, um die beiden Divisor und Dividende zu erhalten, um den gleichen Laden zu haben. Vielen Dank ~ – ll2016

+0

Froh, dass Sie Ihr Problem gelöst haben – Shaharyar