Ich versuche, Nicht-Null-Werte für drei Spalten zu zählen. Für jede der drei Spalten wird jedoch derselbe COUNT-Wert zurückgegeben, obwohl die Anzahl der Nicht-Null-Werte unterschiedlich ist. Ich bin mir nicht sicher, warum das der Fall ist (muss ich den Spaltendatentyp falsch-SQL-Klausel neu formulieren?). Unten ist was ich versucht habe und die Ergebnisse.COUNT Nicht-Null-Werte für mehrere Spalten sind gleich?
EDIT: Bilder mit Text ersetzt. kürzere Aliase erstellt.
SELECT CAST(users.install_ts AS Date) AS inst_date,
COUNT(users.install_ts) AS total_inst,
COUNT(users.firstlogin_ts) AS total_first_logins,
COUNT(users.firstpurchase_ts) AS conv_cust,
SUM(CASE WHEN users.firstpurchase_ts IS NULL THEN 1 ELSE 0 END) AS conv_cust
FROM users
GROUP BY CAST(users.install_ts AS Date)
inst_date total_inst total_first_logins conv_cust conv_cust
---------- ---------- ------------------ --------- ---------
2015-01-01 17191 17191 17191 0
2015-01-02 41038 41038 41038 0
2015-01-03 41176 41176 41176 0
2015-01-04 41072 41072 41072 0
2015-01-05 41115 41115 41115 0
2015-01-06 8417 8417 8417 0
2015-05-16 9991 9991 9991 0
Hier ist der Tisch users
ist:
uid device_id install_ts firstlogin_ts firstpurchase_ts
------ ---------- ------------------- ------------------- -------------------
121045 GalaxyS3 2015-01-01 14:00:01 2015-01-01 14:00:01 (null)
121046 GalaxyS1 2015-01-01 14:00:03 2015-01-01 14:00:07 2015-01-02 06:00:07
121047 iPhone3 2015-01-01 14:00:03 2015-01-01 14:00:03 (null)
121048 GalaxyS1 2015-01-01 14:00:04 (null) (null)
121049 iPhone5 2015-01-01 14:00:07 2015-01-01 14:00:08 (null)
121050 iPad4 2015-01-01 14:00:07 2015-01-01 14:00:09 (null)
121051 iPhone4s 2015-01-01 14:00:11 (null) (null)
121052 iPhone4s 2015-01-01 14:00:13 (null) (null)
121053 GalaxyTab3 2015-01-01 14:00:16 (null) (null)
121054 iPhone4 2015-01-01 14:00:19 2015-01-01 14:00:22 (null)
121055 iPad1 2015-01-01 14:00:22 2015-01-01 14:00:26 (null)
121056 iPad2 2015-01-01 14:00:26 2015-01-01 14:00:29 (null)
121057 GalaxyTab2 2015-01-01 14:00:30 2015-01-01 14:00:31 (null)
121058 iPhone5s 2015-01-01 14:00:34 2015-01-01 14:00:38 (null)
121059 GalaxyS5 2015-01-01 14:00:34 (null) (null)
121060 GalaxyS5 2015-01-01 14:00:34 2015-01-01 14:00:38 (null)
121061 GalaxyS5 2015-01-01 14:00:37 (null) (null)
121062 iPhone3 2015-01-01 14:00:39 (null) (null)
Beschreibung der Tabelle:
DESCRIBE users
Field Type Null Key Default Extra
---------------- ----------- ---- --- ------------------- ---------------------------
uid int(11) YES MUL (null)
device_id varchar(64) YES (null)
install_ts timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
firstlogin_ts timestamp NO 0000-00-00 00:00:00
firstpurchase_ts timestamp NO 0000-00-00 00:00:00
EDIT: Handeln sie einer nach dem anderen gibt die gleichen Ergebnisse. Vielleicht ist es ein Gruppierungsproblem. Wenn dies der Fall ist, wie gehe ich vor, um meine beabsichtigten Ergebnisse zu erzielen?
One zu einem Zeitpunkt:
SELECT COUNT(users.firstlogin_ts) AS total_first_logins
FROM users
GROUP BY CAST(users.install_ts AS Date)
total_first_logins
17191
41038
41176
41072
41115
8417
9991
Eine weitere Säule:
SELECT COUNT(users.install_ts) AS total_inst
FROM users
GROUP BY CAST(users.install_ts AS Date)
total_inst
17191
41038
41176
41072
41115
8417
9991
sicher. Ich denke, ich habe getan, was Sie gefragt haben. Vielen Dank. – user2205916
Sie Gruppierung scheint, als könnte es einige Probleme verursachen; Zumindest sollten Sie die Besetzung statt einer (praktisch zufälligen) Installation_ts im Wertebereich des Cast auswählen. _Ich würde immer noch nicht denken, dass es Ihr Zählwert Problem verursachen würde. _ – Uueerdo
Ist das die genaue Abfrage, die Sie verwendet haben, oder sind Sie 'Join' 'Logins' und/oder 'Umsatz' in irgendeiner Weise? – Uueerdo