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

TOP Liste

  1. 1

    MongoDB eingebettetes Dokument unterscheiden und filtern

  2. 2

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  3. 3

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  4. 4

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  5. 5

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  6. 6

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  7. 7

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  8. 8

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  9. 9

    Ersetzen von Einträgen in einer Spalte durch eine andere basierend auf der Bedingung

  10. 10

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

  11. 11

    Wie ändere ich die Farbe des Symbols und des Textes, wenn ich den Bildschirm im Navigator der unteren Registerkarte in "Reaktion native" ändere?

  12. 12

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  13. 13

    Wie lade ich eine Datei herunter, ohne den Typ oder Dateinamen zu kennen?

  14. 14

    Excel VBA - Erstellen Sie mehrere Dateien aus Daten in mehreren Arbeitsmappen

  15. 15

    Docker bleibt beim Ausführen von time.sleep (1) in einer Python-Schleife hängen

  16. 16

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  17. 17

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  18. 18

    TypeAhead.js zeigt keine Ausgangsschienen an?

  19. 19

    Pandas rufen einen Wert basierend auf dem Index ab

  20. 20

    Aktualisieren des Werts im Json-Objekt in Python

  21. 21

    Das Abrufen von einer URL zeigt einen Fehler in der Konsole an, auch nachdem er abgefangen wurde?

heißlabel

Archiv