Ich habe eine Abfrage, die ich mehrmals für jeden Tag über einen Bereich ausgeführt werde. Ich möchte dies zu einer einzigen Abfrage reduzieren:MYSQL-Gruppe nach Intervall der Tage Summe jeden Tag
SELECT SUM(amount) AS all_time_revenue
FROM charges WHERE DATE(`charges`.`created_at`) <= '2015-03-01'
Ich bin in ein Problem laufen versucht, dies in einer einzigen Abfrage zu konvertieren - ich kann nicht GROUP BY
„created_at“, weil ich alle Gebühren bin Erfassung vor und am Datum. (Nicht nur an diesem Datum). Ich bin mir nicht sicher, ob das möglich ist, aber ich bin sicher, wenn es hier ein Genie gibt, kann es das lösen. Hinweis: Es wäre auch schön, wenn ich die myDate sowie die Summe für jede Zeile zurückgeben könnte. Hier
ist ein komplettes Beispiel dafür, was ich tue:
$start_time = new DateTime('2016-08-01');
$end_time = new DateTime('2016-08-14');
$data = [];
for ($start_time; $start_time < $end_time; $start_time = $start_time->modify('+1 day')) {
$date = $start_time->format("Y-m-d");
$results = DB::SELECT("SELECT SUM(amount) AS all_time_revenue
FROM charges
WHERE `charges`.`created_at` <= ? AND `charges`.`sandbox`=0",
", [$date]);
$data[$date] = $results[0]->all_time_revenue;
}
So ideal würde Ich mag eine einzelne Abfrage auszuführen, die mit einem Datumsbereich oder einem einzigen Datum und die Anzahl der Tage Intervall arbeiten können und ausspucken haben es Zeilen wie:
row 1: ['2016-08-01', 4000.00]
row 2: ['2016-08-02', 4500.00]
...
row 14:['2016-08-14', 15000.00]
Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Abfrage – Strawberry
Es ist nicht alles klar, was der Datentyp von 'created_at' ist ... ist das ein DATUM? ein DATETIME? Und welche Wertebereiche gibt es für $ mydate? – spencer7593
Danke, weil ich keine Ahnung hatte, worüber sich @Strawberry beschwerte. –