So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

Thiago

Ich baue ein Handelssystem auf, in dem Benutzer ihren laufenden Kontostand nach Datum für einen bestimmten Benutzer (UID) kennen müssen, einschließlich wie viel sie durch den Handel verdient haben (Ergebnistabelle) und wie viel sie von ihren Konten eingezahlt oder abgezogen haben (Anpassungstabelle).

Hier ist die SQLfiddle und Tabellen: http://sqlfiddle.com/#!9/6bc9e4/1

Adjustments table:

+-------+-----+-----+--------+------------+
| adjid | aid | uid | amount |    date    |
+-------+-----+-----+--------+------------+
|     1 |   1 |   1 |     20 | 2019-08-18 |
|     2 |   1 |   1 |     50 | 2019-08-21 |
|     3 |   1 |   1 |     40 | 2019-08-21 |
|     4 |   1 |   1 |     10 | 2019-08-19 |
+-------+-----+-----+--------+------------+

Results table:

+-----+-----+-----+--------+-------+------------+
| tid | uid | aid | amount | taxes |    date    |
+-----+-----+-----+--------+-------+------------+
|   1 |   1 |   1 |    100 |     3 | 2019-08-19 |
|   2 |   1 |   1 |    -50 |     1 | 2019-08-20 |
|   3 |   1 |   1 |    100 |     2 | 2019-08-21 |
|   4 |   1 |   1 |    100 |     2 | 2019-08-21 |
+-----+-----+-----+--------+-------+------------+

Wie erhalte ich die folgenden Ergebnisse für uid (1)

+--------------+------------+------------------+----------------+------------+
| ResultsTotal | TaxesTotal | AdjustmentsTotal | RunningBalance |    Date    |
+--------------+------------+------------------+----------------+------------+
| -            | -          | 20               |             20 | 2019-08-18 |
| 100          | 3          | 10               |            133 | 2019-08-19 |
| -50          | 1          | -                |             84 | 2019-08-20 |
| 200          | 4          | 90               |            378 | 2019-08-21 |
+--------------+------------+------------------+----------------+------------+

Dabei ist RunningBalance der aktuelle Kontostand für den jeweiligen Benutzer (UID).

Basierend auf der Antwort von @ Gabriel habe ich mir so etwas ausgedacht, aber es gibt mir ein leeres Gleichgewicht und doppelte Aufzeichnungen

SELECT SUM(ResultsTotal), SUM(TaxesTotal), SUM(AdjustmentsTotal), @runningtotal:= @runningtotal+SUM(ResultsTotal)+SUM(TaxesTotal)+SUM(AdjustmentsTotal) as Balance, date
FROM (
  SELECT 0 AS ResultsTotal, 0 AS TaxesTotal, adjustments.amount AS AdjustmentsTotal, adjustments.date
  FROM adjustments LEFT JOIN results ON (results.uid=adjustments.uid) WHERE adjustments.uid='1'
  UNION ALL
  SELECT results.amount AS ResultsTotal, taxes AS TaxesTotal, 0 as AdjustmentsTotal, results.date
  FROM results LEFT JOIN adjustments ON (results.uid=adjustments.uid) WHERE results.uid='1'
) unionTable
GROUP BY DATE ORDER BY date
Gabriel Gates

Für das, was Sie fragen, möchten Sie die Ergebnisse aus beiden Tabellen zusammenfassen und gruppieren. Dies sollte die gewünschten Ergebnisse liefern. Ich empfehle jedoch, den laufenden Kontostand außerhalb von MySQL zu berechnen, da dies unsere Abfrage etwas komplexer macht.

Seltsame Dinge könnten beispielsweise passieren, wenn jemand die Variable @runningBalance bereits als Teil des Abfragebereichs definiert hat.

SELECT aggregateTable.*, @runningBalance := ifNULL(@runningBalance, 0) + TOTAL
FROM (
  SELECT SUM(ResultsTotal), SUM(TaxesTotal), SUM(AdjustmentsTotal)
   , SUM(ResultsTotal) + SUM(TaxesTotal) + SUM(AdjustmentsTotal) as TOTAL
   , date
  FROM (
    SELECT 0 AS ResultsTotal, 0 AS TaxesTotal, amount AS AdjustmentsTotal, date 
    FROM adjustments
    UNION ALL
    SELECT amount AS ResultsTotal, taxes AS TaxesTotal, 0 as AdjustmentsTotal, date
    FROM results
  ) unionTable
  GROUP BY date
) aggregateTable

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So summieren Sie die Werte einer Spalte und gruppieren sie nach einer anderen Spalte

So gruppieren und summieren Sie ganzzahlige Werte

So summieren Sie Spalten aus zwei Tabellen, wenn der Monat übereinstimmt, und gruppieren Sie nach Monat

Finden Sie Werte nach Datum und summieren Sie sie

Gruppieren Sie nach einer Spalte aus csv und summieren Sie die Werte aus einer anderen (PHP).

MS-Access : So summieren Sie mehrere Werte aus 2 verschiedenen Tabellen nach Datum mit Ausgabe an 1 Datum pro Zeile

Aggregieren Sie Werte und gruppieren Sie nach Datum in Winkel

So gruppieren Sie nach und summieren mit Unterabfragen

Gruppieren nach und summieren Sie über die Spalte in einem Datenrahmen

Wählen Sie : Werte zusammenfassen und nach Datum gruppieren

So gruppieren Sie nach einem Attribut und sortieren nach Datum

Gruppieren Sie die Top-n-Werte nach Datum in Pandas

So "summieren" Sie eindeutige Spaltenwerte und filtern nach Datum

Gruppieren und Summieren der letzten (nach Datum) Werte in SQLite

Gruppieren Sie die Reihenfolge nach Datum und suchen Sie die Min- und Max-Werte basierend auf anderen Spaltenwerten

Wählen Sie die Summe der Werte aus 2 Tabellen aus und gruppieren Sie sie nach dem gemeinsamen Fremdschlüssel

gruppieren Sie die Werte nach Preisdezimal und Summe nach Menge

So zählen Sie Aufzählungen und gruppieren nach Datum

So gruppieren Sie nach Datum ab Datum/Uhrzeit und sortieren nach Datum/Uhrzeit

So aktualisieren Sie die Daten, indem Sie die Werte zweier Tabellen vergleichen

MySQL-Abfrage - Berechnen Sie Werte zwischen mehreren Tabellen und gruppieren Sie sie nach ID

Gruppieren Sie die Kundencode-Registrierung nach Monat und summieren Sie die Transaktionsspalte

So fassen Sie Daten in Tabellen zusammen, die nach Datum filtern

Summieren Sie Werte vom gleichen Datum in Google Tabellen

So summieren Sie Werte nacheinander nach Gruppen

R studio - So gruppieren Sie Daten in einem Panel nach Jahr und summieren sie

So gruppieren Sie Zeilen nach Datum in Ausgabespalten

So gruppieren Sie nach maximalem Datum in Python

Berechnen Sie die Anzahl der Tage zwischen 2 Daten, dann summieren und gruppieren Sie nach Monat

TOP Liste

  1. 1

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  2. 2

    Eclipse Oxygen - Projekte verschwinden

  3. 3

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  4. 4

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  5. 5

    Wie kann ich den Kaskadenmodus global einstellen?

  6. 6

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  7. 7

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  8. 8

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  9. 9

    Modbus Python Schneider PM5300

  10. 10

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  11. 11

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  12. 12

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  13. 13

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  14. 14

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  15. 15

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  16. 16

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  17. 17

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  18. 18

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  19. 19

    Wie wählt man Unterschiede mit drei Tabellen aus?

  20. 20

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  21. 21

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

heißlabel

Archiv