Beispiel-Tutorial zur Verwendung der Summenfunktion in MySQL

Beispiel-Tutorial zur Verwendung der Summenfunktion in MySQL

Einführung

Heute werde ich die Verwendung der Summenfunktion in MySQL erläutern. Diese Funktion ist zu einer häufig verwendeten Funktion beim Betrieb von MySQL-Datenbanken geworden. Diese Funktion zählt die Summe der angegebenen Spalten in Zeilen, die die Bedingungen erfüllen. Ich glaube, jeder sollte sie kennen, also gibt es nichts darüber zu sagen. In diesem Artikel werden hauptsächlich mehrere kleine Fälle verwendet, um ein tiefgreifendes Verständnis dieser Funktion zu erlangen und zu erfahren, wie die Summenfunktion zur Optimierung bei MySQL-Abfragen verwendet wird.

Syntaxanalyse

SUM([DISTINCT] Ausdruck) [over_clause]

  • Gibt die Summe von expr zurück. Wenn der Rückgabesatz keine Zeilen enthält, gibt SUM() NULL zurück. Das Schlüsselwort DISTINCT kann verwendet werden, um nur die unterschiedlichen Werte von expr zu summieren.
  • Wenn keine übereinstimmenden Zeilen vorhanden sind, gibt SUM() NULL zurück.
  • Diese Funktion wird als Fensterfunktion ausgeführt, wenn over_clause vorhanden ist.

Bei den obigen Sätzen handelt es sich um eine Funktionsbeschreibung aus der offiziellen MySQL-Dokumentation. Hier ist eine Übersetzung der ungefähren Bedeutung.

  • Gibt die Summe von expr zurück. Wenn keine Zeilenanzahl zurückgegeben wird, wird NULL zurückgegeben. Das DISTINCT dient hier dazu, doppelte Werte im Ausdruck expr zu entfernen.
  • Wenn keine passenden Zeilen gefunden werden, gibt diese Funktion ebenfalls NULL zurück.
  • Wenn over_clause gesetzt ist, wird die Funktion als Fensterfunktion ausgeführt. Wenn Sie mit Fensterfunktionen nicht vertraut sind, können Sie sich über Fensterfunktionen in MySQL informieren.

Funktion Erklärung

Bei der Verwendung dieser Funktion sollten wir darüber nachdenken, wie diese Funktion die Summe im Ausdruck zählt. Einige Programmierer denken möglicherweise, dass diese Funktion direkt die Summe aller Zeilen zählt, die die Bedingungen erfüllen. Dieses Verständnis ist zwar nicht falsch, aber es ist nicht ganz präzise ausgedrückt bzw. er versteht die Funktionsweise nicht wirklich.
Tatsächlich sammelt diese Funktion die Werte der übereinstimmenden Zeilen nacheinander. Hier ist ein Beispiel. Es gibt 10 Datenzeilen, die die Bedingungen in einer Bestelltabelle erfüllen. Wir müssen den Gesamtpreis der Bestellung berechnen. Der Anfangswert der Summe ist 0. Beim Abgleichen der ersten Zeile beträgt der Bestellpreis 10 und die Summe wird 10. Beim Abgleichen der zweiten Zeile beträgt der Bestellpreis 20 und die Summe 30. Der Bestellpreis in der dritten Zeile beträgt 50, die Summe beträgt also 80. Auf diese Weise werden die Zahlen einzeln angesammelt.

Anzahl der Zeilen Bestellpreis Summenwert
Erste Reihe 10.00 10.00
Zweite Reihe 20.00 30.00
Dritte Reihe 30.00 60,00
Vierte Reihe 40,00 100,00
Fünfte Reihe 50,00 150,00
Linie... ... ...
Linie 10 100,00 550,00

Beispieldemonstration

Angenommen, es gibt eine Tabelle (Lieferung) mit der folgenden Struktur:

+-----------------------------+---------+
| Spaltenname | Typ |
+-----------------------------+---------+
| Liefer-ID | int |
| Kunden-ID | int |
| Bestelldatum | Datum |
| Kundenwunschlieferdatum | Datum |
| Geldbestellmenge | Dezimalzahl |
+-----------------------------+---------+

delivery_id ist der Primärschlüssel der Tabelle.

Diese Tabelle enthält Informationen zur Essenslieferung für Kunden, die an einem bestimmten Datum eine Bestellung aufgeben und ein gewünschtes Lieferdatum angeben (dasselbe wie oder nach dem Bestelldatum). Stimmt der voraussichtliche Liefertermin des Kunden mit dem Bestelldatum überein, spricht man von einer „Sofortbestellung“, andernfalls von einer „Planbestellung“.
Folgende Daten sind dabei enthalten:

+-------------+----------+------------+--------------+-------------+
| Liefer-ID | Kunden-ID | Bestelldatum | Kundenwunsch-Lieferdatum | Bestellgeld |
+-------------+----------+------------+--------------+-------------+
| 1 | 1 | 01.08.2019 | 02.08.2019 | 1,23 |
| 2 | 5 | 02.08.2019 | 02.08.2019 | 1.01 |
| 3 | 1 | 11.08.2019 | 11.08.2019 | 1,09 |
| 4 | 3 | 24.08.2019 | 26.08.2019 | 1,00 |
| 5 | 4 | 21.08.2019 | 22.08.2019 | 10,00 |
| 6 | 2 | 11.08.2019 | 13.08.2019 | 12.09 |
+-------------+----------+------------+--------------+-------------+

Beispiel 1

Berechnen Sie den Gesamtbetrag aller Bestellungen in der Tabelle. Dies ist sehr einfach und entspricht auch unserer üblichen Verwendungsmethode. Füllen Sie einfach eine Spalte mit dem Parameter sum() aus. Gemäß den oben genannten Grammatikregeln sollte es sich um einen Ausdruck handeln. Tatsächlich ist eine Spalte auch ein Ausdruck.

Wählen Sie die Summe (Bestellgeld) aus der Lieferung.

Beispiel 2

Schreiben Sie eine SQL-Abfrage, um den Prozentsatz der Sofortbestellungen zu ermitteln, und behalten Sie dabei zwei Dezimalstellen bei. Dies kann etwas schwierig sein, da Sie diese Syntax selten verwenden. Wenn Sie sie verwendet haben, werden Sie feststellen, dass sie sehr einfach ist.

Zunächst müssen Sie verstehen, dass Sie die Gesamtsumme berechnen müssen, da Sie den Anteil eines bestimmten Typs abfragen. Wir können die gesamte Bestellsumme1 zählen, dann die gesamte Sofortbestellsumme1 zählen, dann die gesamte Sofortbestellsumme1 zählen und dann die gesamte Sofortbestellsumme2 zählen. Dann teile es einfach. Allerdings wird hier explizit eine SQL-Anweisung verlangt. Wie kann man das Problem also lösen?

Hier müssen Sie das Funktionsprinzip von sum genau verstehen. Wir können uns vorstellen, dass wir die Daten Zeile für Zeile lesen und sum dann Zeile für Zeile akkumulieren lassen. Können wir die Zusammenfassung von sum2 erhalten? Und was ist mit der Synthese von sum2? Und was ist mit der Synthese von sum2? Was Summe1 betrifft, ist es definitiv einfach zu zählen, da es sich dabei um die Summe der Zeilenanzahl in der Tabelle handelt.

Lösung 1:

Runde auswählen (
 Summe(Fall wenn Bestelldatum = Kundenwunschlieferdatum, dann 1, sonst 0, Ende) /
 Anzahl(*) * 100,
 2
) als unmittelbarer_Prozentsatz
ab Lieferung

Lösung 2:

Runde auswählen (
 Summe(Bestelldatum = Kundenwunschlieferdatum) /
 Anzahl(*) * 100,
 2
) als unmittelbarer_Prozentsatz
ab Lieferung

Wenn der Summenausdruck die Bedingung erfüllt, wird hier 1 zurückgegeben. Jedes Mal, wenn eine Datenzeile gelesen wird, die die Bedingung erfüllt, wird die Summe um 1 erhöht. Wenn schließlich alle Daten gelesen wurden, wird auch die Summe erhöht. Daher ergibt sich die Gesamtzahl der Artikel, die die Bedingungen erfüllen.

Quelle

Der Titel stammt von LeetCode.

Quelle: LeetCode

Link: leetcode-cn.com/problems/im…

Es gibt noch ein weiteres gutes Beispiel, bei dem ich Ihnen empfehle, es mit Vorsicht zu interpretieren. Vertiefen Sie die Anwendungsszenarien dieser Funktion.

https://www.jb51.net/article/207813.htm

Zusammenfassen

Dies ist das Ende dieses Artikels über die Verwendung der Summenfunktion in MySQL. Weitere Informationen zur Verwendung der MySQL-Summenfunktion finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Einführung in den Unterschied zwischen count() und sum() in MySQL
  • Tutorial zur Verwendung der SUM-Funktion in MySQL
  • Detaillierte Erläuterung des Problems bei der Verwendung der Funktion sum() zur Rückgabe von null in MySQL

<<:  Beispielcode zur Implementierung des Aushöhlungseffekts mit CSS

>>:  Ein kurzer Vortrag über das Klonen von JavaScript

Artikel empfehlen

Vue implementiert eine Komponente zur dynamischen Abfrageregelgenerierung

1. Dynamische Abfrageregeln Die dynamischen Abfra...

Konstruktions- und Nutzungsprozess des Vue3.0-Projekts

Inhaltsverzeichnis 1. Projektkonstruktion 2: Verz...

js zur Implementierung der Kollisionserkennung

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung der node.js-Installation und HbuilderX-Konfiguration

Tutorial zur npm-Installation: 1. Laden Sie das N...

Docker-Cross-Server-Kommunikations-Overlay-Lösung (Teil 1) Consul-Einzelinstanz

Inhaltsverzeichnis Szenario Aufgabe Idee analysie...

Zusammenfassung aller HTML-Interviewfragen

1. Die Rolle des Doctypes, der Unterschied zwisch...

MySQL Dual-Machine Hot-Standby-Implementierungslösung [testbar]

Inhaltsverzeichnis 1. Konzept 2. Umgebungsbeschre...

js zur Implementierung einer Überprüfungscode-Interferenz (dynamisch)

In diesem Artikelbeispiel wird der spezifische Co...

So deklarieren Sie einen Cursor in MySQL

So deklarieren Sie einen Cursor in MySQL: 1. Vari...

10 inhaltliche Prinzipien zur Verbesserung der Website-Performance

<br />Englische Adresse: http://developer.ya...

Die benutzerdefinierte Vue-Komponente implementiert eine bidirektionale Bindung

Szenario: Die von uns häufig verwendeten Interakt...