Die Division in SQL (Die Division in SQL), Lektion, Seite 722937
https://www.purl.org/stefan_ram/pub/division_sql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
SQL-Kurs

Die Division in SQL  (MySQL )

Vorbereitung

Zum Nachvollziehen der folgenden Beispiele kann das folgende Skript in einen MySQL-Klienten kopiert werden. Der Inhalt dieses Skripts kann aber ansonsten ignoriert werden. Dieses Skript muß zum jetzigen Zeipunkt also nicht verstanden werden. Bei Kopieren ist darauf zu achten nur genau den Text von »DROP« bis zum letzten »;« zu kopieren und dann die Eingabetaste zu drücken.

Skript (MySQL )

WARNINGS; SET sql_mode = 'ANSI,TRADITIONAL';
DROP SCHEMA IF EXISTS D; CREATE SCHEMA D; USE D;

CREATE TABLE WERTE( Y DECIMAL( 9, 2 ), X DECIMAL( 9, 2 ) );
INSERT INTO WERTE( Y, X )VALUES( 8, 2 );

CREATE TABLE UMSATZ( JAHR INTEGER, OST INTEGER, WEST INTEGER );
INSERT INTO UMSATZ( JAHR, OST, WEST )VALUES( 2025, 1424, 4228 );
INSERT INTO UMSATZ( JAHR, OST, WEST )VALUES( 2026, 733, 2891 );
INSERT INTO UMSATZ( JAHR, OST, WEST )VALUES( 2027, 126, 561 );
INSERT INTO UMSATZ( JAHR, OST, WEST )VALUES( 2028, 78, 121 );

CREATE TABLE DATEN( Y DECIMAL( 9, 2 ), X DECIMAL( 9, 2 ) );
INSERT INTO DATEN( Y, X )VALUES( 10, 2 );

CREATE TABLE PREIS( JAHR INTEGER, GOLD INTEGER, SILBER INTEGER );
INSERT INTO PREIS( JAHR, GOLD, SILBER )VALUES( 2022, 424, 14 );
INSERT INTO PREIS( JAHR, GOLD, SILBER )VALUES( 2023, 733, 26 );
INSERT INTO PREIS( JAHR, GOLD, SILBER )VALUES( 2024, 826, 31 );
INSERT INTO PREIS( JAHR, GOLD, SILBER )VALUES( 2025, 678, 11 );

CREATE TABLE ONE ( COL INTEGER );
INSERT INTO ONE ( COL ) VALUES ( 1 );

SELECT * FROM WERTE;
SELECT * FROM UMSATZ;
SELECT * FROM DATEN;
SELECT * FROM PREIS;
SELECT * FROM ONE;

Division mit Spaltenwerten

Wir zeigen hier zunächst eine Basistabelle mit zwei Werten (ein Wert pro Spalte). Der Wert »Y« ist ‹ 8 ›, und »X« ist ‹ 2 ›.

Konsole
SELECT * FROM WERTE;
+------+------+
| Y | X |
+------+------+
| 8.00 | 2.00 |
+------+------+
Konsole
SELECT Y, X FROM WERTE;
+------+------+
| Y | X |
+------+------+
| 8.00 | 2.00 |
+------+------+

Wir können nun an einer Stelle, an der eine Spalte angegeben werden kann, auch einen Quotienten  zweier Spalten angeben.

Dazu werden der Name des Dividenden, ein Schrägstrich und der Name des Divisors direkt hintereinander geschrieben.

Konsole
SELECT Y/X FROM WERTE;
+----------+
| Y/X |
+----------+
| 4.000000 |
+----------+

Wir erhalten also den Wert der Division »8.00 / 2.00«, gesprochen: „Acht durch Zwei“. Der Quotient (die Division) ‹ 8÷2 › hat den Wert ‹ 4 ›.

Der Dividen, der Schrägstrich und der Divisor bilden jeweils eine lexikalische Einheit, weswegen auch Leerraum zwischen diese Teile eingesetzt werden darf.

Konsole
SELECT Y / X FROM WERTE;
+----------+
| Y / X |
+----------+
| 4.000000 |
+----------+

Vertauschen wir die Reihenfolge der beiden Spaltennamen, so erhalten wir »2/8« (den Kehrwert von »8/2«). ‹ 2÷8 › hat den Wert ‹ 0,25 ›.

Konsole
SELECT X / Y FROM WERTE;
+----------+
| X / Y |
+----------+
| 0.250000 |
+----------+

Eine Angabe, wie »X / Y«, die man hinter »SELECT« schreiben kann, nennen wir einen Ausdruck  (auch Wertausdruck ).

Ein Spalte, die in einer Zeile nicht einfach nur den Wert eine Spalte der Basistabelle in jener Zeile wiedergibt, wird auch berechnete Spalte  genannt.

Wir können hinter »SELECT« auch mehrer Ausdrücke schreiben, die dann durch ein Komma »,« getrennt werden müssen.

Konsole
SELECT Y, X, Y / X FROM WERTE;
+------+------+----------+
| Y | X | Y / X |
+------+------+----------+
| 8.00 | 2.00 | 4.000000 |
+------+------+----------+
Konsole
SELECT 
Y,
X,
Y / X,
X / Y
FROM
WERTE;
+------+------+----------+----------+
| Y | X | Y / X | X / Y |
+------+------+----------+----------+
| 8.00 | 2.00 | 4.000000 | 0.250000 |
+------+------+----------+----------+

Division mit Umsätzen

Die Tabelle »UMSATZ« enthält verschiedene Spalten, welche Umsätze eines Unternehmens in bestimmten Gebieten und Jahren in der Einheit „Tausend Taler“ angeben.

Die Zeile mit einem bestimmten Jahr enthält Umsätze jenes Jahres in Tausend Taler. Die Spalten mit dem Namen eines bestimmten Gebietes enthalten Umsätze jenes Gebietes. Beispielsweise enthält die Zeile mit dem Jahr »2026« in der Spalte »Ost« den Wert »733«. was bedeuten soll, daß der Umsatz im Gebiet »Ost« im Jahre »2026« 733 Tausend Taler betrug.

Wir zeigen hier zunächst die Basistabelle:

Konsole
SELECT * FROM UMSATZ;
+------+------+------+
| JAHR | OST | WEST |
+------+------+------+
| 2025 | 1424 | 4228 |
| 2026 | 733 | 2891 |
| 2027 | 126 | 561 |
| 2028 | 78 | 121 |
+------+------+------+

In dem folgenden Beispiel wird die Basistabelle mit der Angabe jeder Spalte ausgegeben.

Konsole
SELECT JAHR, OST, WEST FROM UMSATZ;
+------+------+------+
| JAHR | OST | WEST |
+------+------+------+
| 2025 | 1424 | 4228 |
| 2026 | 733 | 2891 |
| 2027 | 126 | 561 |
| 2028 | 78 | 121 |
+------+------+------+

Wir können an einer Stelle, an der eine Spalte angegeben werden kann, aber auch einen Quotienten zweier Spalten angeben.

Der Quotient »OST / WEST« gibt das Verhältnis zwischen dem Ost- und dem West-Umsatz wieder. Er drückt aus wie viel Mal größer der Ost-Umsatz im Vergleich zum West-Umsatz ist.

Konsole
SELECT JAHR, OST / WEST FROM UMSATZ;
+------+-------------+
| JAHR | OST / WEST |
+------+-------------+
| 2025 | 0.3368 |
| 2026 | 0.2535 |
| 2027 | 0.2246 |
| 2028 | 0.6446 |
+------+-------------+

Der Quotient »WEST / OST« gibt das Verhältnis zwischen dem West- und dem Ost-Umsatz wieder. Er drückt aus wie viel Mal größer der West-Umsatz im Vergleich zum Ost-Umsatz ist.

Konsole
SELECT JAHR, WEST / OST FROM UMSATZ;
+------+-------------+
| JAHR | WEST / OST |
+------+-------------+
| 2025 | 2.9691 |
| 2026 | 3.9441 |
| 2027 | 4.4524 |
| 2028 | 1.5513 |
+------+-------------+

Wir können auch alle vorhandenen Spalten der Basistabelle ausgeben und zusätzlich noch eine berechnete Spalte »OST / WEST«.

Konsole
SELECT JAHR, OST, WEST, OST / WEST FROM UMSATZ;
+------+------+------+-------------+
| JAHR | OST | WEST | OST / WEST |
+------+------+------+-------------+
| 2025 | 1424 | 4228 | 0.3368 |
| 2026 | 733 | 2891 | 0.2535 |
| 2027 | 126 | 561 | 0.2246 |
| 2028 | 78 | 121 | 0.6446 |
+------+------+------+-------------+

Wir können auch alle vorhandenen Spalten der Basistabelle ausgeben und zusätzlich noch mehrere berechnete Spalten, wie »OST / WEST« und »WEST / OST«.

Konsole
SELECT
JAHR,
OST,
WEST,
OST / WEST,
WEST / OST
FROM
UMSATZ;
+------+------+------+-------------+-------------+
| JAHR | OST | WEST | OST / WEST | WEST / OST |
+------+------+------+-------------+-------------+
| 2025 | 1424 | 4228 | 0.3368 | 2.9691 |
| 2026 | 733 | 2891 | 0.2535 | 3.9441 |
| 2027 | 126 | 561 | 0.2246 | 4.4524 |
| 2028 | 78 | 121 | 0.6446 | 1.5513 |
+------+------+------+-------------+-------------+

Übungsfragen

?   Division

Die folgende Abfrage gibt die Tabelle »DATEN« aus.

Konsole
SELECT * FROM DATEN;
+-------+------+
| Y | X |
+-------+------+
| 10.00 | 2.00 |
+-------+------+

Welcher Wert wird von der folgenden Abfrage ausgegeben?

Konsole
SELECT Y / X FROM DATEN;

Welcher Wert wird von der folgenden Abfrage ausgegeben?

Konsole
SELECT X / Y FROM DATEN;

Übungsaufgaben

/   Division

Die folgende Abfrage gibt die Tabelle »PREIS« aus. Diese Tabelle enthält den auf ganzzahlige Werte gerundeten Preis in Talern für eine Feinunze Gold beziehungsweise Silber in den angegebenen Jahren.

Konsole
SELECT * FROM PREIS;
+------+------+--------+
| JAHR | GOLD | SILBER |
+------+------+--------+
| 2022 | 424 | 14 |
| 2023 | 733 | 26 |
| 2024 | 826 | 31 |
| 2025 | 678 | 11 |
+------+------+--------+

Erstellen Sie eine abgeleitete Tabelle (eine SELECT-Ausgabe), welche den vollständigen Inhalt der Tabelle »PREIS« enthält und zusätzlich eine Spalte mit dem Verhältnis von Goldpreis zu Silberpreis.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722937 stefan_ram:722937 Die Division in SQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722937, slrprddef722937, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/division_sql