ich einen Datensatz haben, die wie folgtSQL - Summenwerte mit demselben Datum, für jedes Datum
Enc_ID | date | P1 | P3 |
--------------------------------
1 | 11/1/17 | 1 | NULL |
2 | 11/1/17 | NULL | 1 |
3 | 11/1/17 | 1 | NULL |
4 | 11/2/17 | 1 | NULL |
5 | 11/2/17 | NULL | 1 |
sieht also jede Zeile ist eine Begegnung, und es sein kann (immer) mehrere Begegnungen an einem bestimmten Tag .
Ich muss eine laufende Summe von P1 und P3 für jeden Tag berechnen. Also:
date | sum_p1 | sum_p3 |
---------------------------
11/1/17 | 2 | 1 |
11/2/17 | 3 | 2 |
Dann brauche ich für jede dieser Summen diese Berechnung auszuführen, für jeden Tag wie folgt aus:
(sum_p1 - sum_p3)/sum_p1
Also muss ich schließlich eine Tabelle, die
date | dropout rate
----------------------
11/1/17 | 50%
11/2/17 | 33%
zeigen würde, Ich versuche dies in Superset zu tun, also kann ich keine JOINS
verwenden. Ich habe eine Art verschachtelt GROUP BY
versucht, aber MySQL (5.7.20)
mag es nicht.
Dies ist meine aktuelle Abfrage, aber es gibt nur die SUM
von p1 und p3 für jedes Datum, nicht AS von jedem Datum.
SELECT encounter_date AS __timestamp,
(SUM(p1) - SUM(p3))/SUM(p1) AS pd
FROM encounter
WHERE encounter_date >= '2016-11-06 00:00:00.000000'
AND encounter_date <= '2017-11-06 17:00:29.000000'
GROUP BY encounter_date
ORDER BY encounter_date ASC
LIMIT 50000
OFFSET 0
Ist es MySQL oder Postgresql? –
danke @Gordon für die Formatierung Hilfe :) –
@ClodoaldoNETo derzeit arbeite ich in MySQL, aber ich glaube, wir wechseln bald nach Postgres, so habe ich mit beiden markiert –