php-resource.de

MySQL Tutorial: MySQL für Anfänger einfach erklärt

Dieses Tutorial richtet sich an Anfänger, die noch nie mit SQL gearbeitet haben. Vielleicht ist aber auch für Fortgeschrittene das Eine oder Andere dabei.

|30.09.2008 | Berni | 74324 | KAT : MySQL | | Kommentare 2


9

18

Gruppieren von Daten

Nun wollen wir nicht die Gesamtsumme, sondern die Auswertung pro Artikelnummer. Die Artikelnummer wird als Spalte in den SELECT und GROUP BY aufgenommen. So werden alle Summen gruppiert nach Artikelnummer:

SQL:
SELECT
    artikelnummer,
    COUNT(*) as anzahl_artikel,
    SUM(einkaufspreis) as summe_ek,
    SUM(verkaufspreis) as summe_vk,
    SUM(verkaufspreis)-SUM(einkaufspreis) as summe_gewinn
FROM umsatz
GROUP BY artikelnummer

MySQL sortiert intern nach GROUP BY (hier: Artikelnummer) und fasst die Daten mit Aggregatfunktionen SUM zusammen:

Nun erstellen wir eine Auswertung pro Tag, d.h. wir gruppieren nach Datum.

SQL:
SELECT
    datum,
    COUNT(*) as anzahl_artikel,
    SUM(einkaufspreis) as summe_ek,
    SUM(verkaufspreis) as summe_vk,
    SUM(verkaufspreis)-SUM(einkaufspreis) as summe_gewinn
FROM umsatz
GROUP BY datum

Grundsätzlich sollten alle Spalten ohne Aggregatfunktionen im SELECT auch im GROUP BY vorkommen.

Warnung:
Viele SQL-Server vergleichen die Nicht - Aggregatfunktionen im SELECT und GROUP BY weigern sich gegebenenfalls, einen solchen SQL auszuführen. MySQL erzeugt jedoch keinen Fehler. Wenn die Spalten im SELECT und GROUP BY nicht identisch sind, können falsche Werte ausgegeben werden. Man muss also sehr genau unterscheiden, was eine Aggregatfunktion ist und was nicht:

Als Negativbeispiel wählen wir die Artikelnummer im SELECT und das Datum im GROUP BY:

SQL:
SELECT
    artikelnummer,
    COUNT(*) as anzahl_artikel,
    SUM(einkaufspreis) as summe_ek,
    SUM(verkaufspreis) as summe_vk,
    SUM(verkaufspreis)-SUM(einkaufspreis) as summe_gewinn
FROM umsatz
GROUP BY datum

Das Ergebnis ist zu nichts zu gebrauchen. Nur eine einzige Artikelnummer erscheint, sie wird 2x angezeigt, und das mit falschen Werten. Wir haben diesen Artikel nicht 6x verkauft. Was ist passiert? MySQL hat nach datum gruppiert und den ersten Datensatz im Feld Artikelnummer verwendet:

Navigation -> Seitenanzahl : (18)

  «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
24.06.2012 10:50:44 Hi, als Anfänger in mysql hat mich dieses Tutorial begeistert und stellenweise schon überf ...
21.01.2010 20:47:24 Ein echt sehr schönes MySQL Tutorials, nur leider fehlen da tiefes eingehen über die Unter ...

Alle Kommentare anzeigen ...
 
Über den Autor
Berni

Berni

Status
Premium Mitglied

Beruf
Selbstständig

Mitglied seit:
22.01.2001

letzte Aktivität
22.09.2019

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

Die RIGID-FLEX-Technologie

Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Neu | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni