2017-07-03 1 views
1

Ich versuche, das gesamte Dokument spart pro Tag zu erhalten. Aber ich habe keine Ahnung wie. Hier sind die Spalten mit ihren Daten in meiner Datenbank.PHP Berechnen Gesamtbetrag speichert pro Tag

report_id doc_date total_doc 
- 1   2017-06-06 1 
- 2   2017-06-23 1 
- 3   2017-06-14 1 
- 4   2017-06-12 1 
- 5   2017-06-16 1 
- 6   2017-06-21 1 
- 7   2017-06-14 1 
- 9   2017-06-13 1 
- 10   2017-06-21 1 
- 11   2017-06-12 1 
- 12   2017-06-18 1 
- 13   2017-06-12 1 
..... 

Oben, gibt es ähnliches Datum zum Beispiel

- 3   2017-06-14 1 
- 7   2017-06-14 1 

Ich brauche eine SQL-Abfrage, die das gesamte Dokument pro Tag spart würde berechnen und anzeigen. Also für 14 Juni 2017 wäre die Summe 2. Irgendwelche Idee Jungs? FYI das total_doc ist automatisch gleich 1. Aktualisiert: Und zeigen Sie die gesamte Dokument speichert an diesem Tag.

+0

Haben Sie jemals etwas versucht? – Blank

+0

Ja, aber ich habe immer Fehler, ich bin kein Profi im Bereich von MySQL. –

+0

Dann posten Sie Ihre Anfrage und Fehler. – Blank

Antwort

0
SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
GROUP BY doc_date 
ORDER BY doc_date ASC; 

ODER

SELECT 
    doc_date, 
    sum(total_doc) AS saves 
FROM documents 
GROUP BY doc_date 
ORDER BY doc_date ASC; 

Hinweise:

1) Wenn Sie die erste Option verwenden, können Sie dann kann die Spalte total_doc entfernen. Das wäre auch mein Rat. Sie haben ein gutes MySQL-Format der Datumswerte in der doc_date Spalte, so dass Sie solide Operationen darauf machen können.

2) Sie können die Datensätze in absteigender Reihenfolge nach doc_date sortieren, wenn Sie möchten.

3) Vergessen Sie nicht, die Spalten bei Verwendung von Funktionen wie count oder sum wie bei AS saves zu aliasieren. Denn dann kannst du auch einen HAVING Filter verwenden.So etwas wie diese - alle Dokumente mit mehr als einem außer pro Tag:

SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
GROUP BY doc_date 
HAVING saves > 1 
ORDER BY doc_date ASC; 

Und dann kann man auch nur von einer gespeicherten Dokument an einem bestimmten Tag filtern:

SELECT 
    doc_date, 
    count(doc_date) AS saves 
FROM documents 
WHERE doc_date = "2017-06-12" 
GROUP BY doc_date 
HAVING saves > 1 
ORDER BY doc_date ASC; 

4) Oder können Sie ignorieren Sie auch einfach HAVING und doc_date, wenn Sie es wünschen. Damit erhalten Sie die Dokumente, die an einem bestimmten Tag gespeichert wurden.

SELECT count(doc_date) AS saves 
FROM documents 
WHERE doc_date = "2017-06-12" 
GROUP BY doc_date 
ORDER BY doc_date ASC; 
0

Versuchen Sie, diese (table_name auf den Namen der Tabelle eingestellt):

SET @row_count = 0; 
SELECT (@row_count:[email protected]_count+1) AS totalSaves FROM table_name WHERE doc_date='2017-06-14' 

Die erste Zeile definiert eine Variable, row_count, und setzt es auf 0.

Die zweite Zeile durchläuft die Datenbank, findet alle Zeilen, in denen das Datum 2017-06-14 ist, und für jede eine Erhöhung row_count.

Dann wir SELECT die endgültige Nummer in row_count als eine einzelne Zeile in einer Spalte mit der Bezeichnung totalSaves.

Set table_name auf den Namen der Tabelle

0
SELECT doc_date, sum(total_doc) AS total 
FROM table_name 
GROUP BY doc_date 

ändern table_name mit Ihrem Tabellennamen.

Wenn Sie nur 1 Tag zeigen wollen:

SELECT doc_date, sum(total_doc) AS total 
FROM table_name 
WHERE doc_date = '2017-06-14' 
GROUP BY doc_date 
Verwandte Themen