ZFSL/MS/SQL/wikea

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
== '''Datenbank für die Auftragsverwaltung der wikea GmbH''' ==

Das Unternehmen WIKEA GmbH ist ein mittelständisches Industrieunternehmen, das auf die Produktion von Designer-Tischen ausgerichtet ist. Weiter vertreibt das Unternehmen hochwertige Möbel von führenden Lieferanten der Möbelbranche. In der folgenden Tabelle sind wichtige Unternehmensdaten zusammengefasst:


[[Bild:Strukturtabellen-wikea.gif]]

Zur Verwaltung der Aufträge liegt eine Datenbank mit der folgenden Tabellenstruktur vor:




<code id="53a52f4583ea5"   hidden>

CREATE TABLE artikel (
  ArtikelID int NOT NULL,
  Beschreibung varchar(50) NOT NULL,
  ArtikelgruppenID int NOT NULL,
  VKPreis double NOT NULL,
  PRIMARY KEY (ArtikelID)
) ;

INSERT INTO artikel (ArtikelID, Beschreibung, ArtikelgruppenID, VKPreis) VALUES
(101002, 'Quadratischer Tisch',10, 75),
(101005, 'Rechteckiger Tisch',10, 899),
(101007, 'Couchtisch Umbria',10, 129),
(202019, 'Schreibtisch mit Schubladen',1, 681),
(202029, 'Sofa Palermo, grün', 20,1458),
(204123, 'Sessel Wien',30, 420),
(204127, 'Stuhl Sizilien',30, 100),
(204333, 'Arzneischrank',40, 98),
(204455, 'Kommode', 40,520);

CREATE TABLE artikelgruppe (
  ArtikelgruppenID int NOT NULL ,
  Bezeichnung varchar(30) NOT NULL,
  PRIMARY KEY (ArtikelgruppenID)
) ;


INSERT INTO artikelgruppe (ArtikelgruppenID, Bezeichnung) VALUES
(10, 'Tisch'),
(20, 'Polstermöbel'),
(30, 'Stuhl'),
(40, 'Bett'),
(50, 'Regal'),
(60, 'Schrank');






CREATE TABLE auftrag (
  AuftragID int NOT NULL,
  Auftragsdatum date NOT NULL,
  KundenID int NOT NULL,
  PRIMARY KEY (AuftragID),  
) ;


INSERT INTO auftrag (AuftragID, Auftragsdatum, KundenID) VALUES
(1, '2014-06-12', 1),
(2, '2014-06-15', 14),
(3, '2014-06-15', 30),
(4, '2014-06-18', 58),
(5, '2014-06-18', 39),
(6, '2014-06-18', 1),
(7, '2014-06-19', 30),
(8, '2014-06-19', 46),
(9, '2014-06-19', 24),
(10, '2014-06-19', 30),
(11, '2014-06-03', 55);



CREATE TABLE  auftragsposition (
  AuftragID int NOT NULL,
  ArtikelID int NOT NULL,
  Anzahl int NOT NULL,
  VKPreis double NOT NULL,
  PRIMARY KEY (AuftragID,ArtikelID)
 
) ;


INSERT INTO auftragsposition (AuftragID, ArtikelID, Anzahl, VKPreis) VALUES
(1, 101005, 1,69),
(2, 101005, 40, 89),
(2, 101007, 20,109),
(3, 204123,4,349),
(4,101005,8,89),
(4,204455,1,460),
(5,101002,30,590);



CREATE TABLE kunde (
  KundenID int NOT NULL,
  Anrede varchar(5) NOT NULL,
  Nachname varchar(30) NOT NULL,
  PLZ varchar(5) NOT NULL,
  PRIMARY KEY (KundenID)

) ;


INSERT INTO kunde (KundenID, Anrede,Nachname, PLZ) VALUES
(1, 'Firma', 'Möbelhaus Nord', '10125'),
(2, 'Firma', 'Möbelladen Schröder','10115'),
(3, 'Firma','Maiers Möbelhaus',	'20500'),
(4, 'Herr','Meier','80000'),
(5, 'Herr','Mayer','80123'),
(6, 'Herr','Meyer', '20115'),
(7, 'Herr','Schmid', '12345'),
(8, 'Herr', 'Schmidt', '14000'),
(9, 'Herr', 'Schmitt', '13000'),
(10, 'Frau', 'Schmied', '20115'),
(11, 'Frau', 'Müller', '80215'),
(12, 'Frau', 'Miller', '80000'),
(14, 'Firma','Hinz Möbelhaus', '12000'),
(15, 'Herr','Kunz', '12345'),
(16, 'Herr', 'Schlummer', '15010'),
(17, 'Herr', 'Grummel', '16010'),
(19, 'Frau', 'Gruber', '20500'),
(20, 'Frau','Schlotterbeck', '20134'),
(21,'Frau', 'Schröder', '80000'),
(22, 'Herr','Schumann', '80100'),
(23, 'Herr','Meier', '80200'),
(24,'Firma', 'Hoffmanns Möbelhaus', '20000'),
(25, 'Firma','Bäcker', '12345'),
(26, 'Herr', 'Becker', '20123'),
(28, 'Herr', 'Scharping', '80500'),
(29, 'Frau', 'Pohlke', '20500'),
(30, 'Herr', 'Müller-Lüdenscheid', '12345'),
(31, 'Frau', 'Winkler','12345'),
(32, 'Frau', 'Lehmann', '80099'),
(33, 'Frau', 'Grabowski', '20010'),
(35, 'Frau', 'Landmann', '80000'),
(36, 'Frau', 'Konopke', '20000'),
(37, 'Herr', 'Wagner', '80999'),
(38, 'Herr', 'Mahler', '20500'),
(39, 'Herr', 'Schulte', '20200'),
(40, 'Herr', 'Obermeier', '12345'),
(42, 'Herr', 'Minsky', '10500'),
(43, 'Herr', 'Pawlow', '12000'),
(44, 'Frau', 'Murnau', '20123'),
(45, 'Frau', 'Brandt', '12345'),
(46, 'Firma', 'Hotel zur Eiche', '45250'),
(48, 'Firma', 'Minimarkt', '44787'),
(49, 'Firma', 'Domowina', '44787'),
(50, 'Firma', 'Handwerkerland', '47055'),
(51, 'Firma', 'Restaurant Oase', '45233'),
(52, 'Firma', 'Domspitzengalerie', '51200'),
(53, 'Firma', 'Oskars Hotel', '60123'),
(54, 'Firma', 'Möbel Hellstern', '88353'),
(55, 'Firma', 'Lösken Massivmöbel', '45234'),
(56, 'Firma', 'Rosis Möbelstube', '41088'),
(57, 'Firma', 'Möbelstube GmbH', '40120'),
(58, 'Firma', 'Seidenweber & Co KG', '56206'),
(59, 'Herr',  'Kasimir', '12157'),
(60, 'Firma', 'Möbelhaus Meyer & Partner', '80123');

CREATE TABLE ort (
  PLZ varchar(5)NOT NULL,
  Ort varchar(50) NOT NULL,
  PRIMARY KEY (PLZ)
) ;



INSERT INTO ort (PLZ, Ort) VALUES
('10125', 'Berlin'),
('10500', 'Berlin'),
('12000', 'Berlin'),
('12157', 'Berlin'),
('12345', 'Berlin'),
('13000', 'Berlin'),
('14000', 'Berlin'),
('15010', 'Berlin'),
('16010', 'Berlin'),
('19339', 'Plattenberg'),
('20000', 'Hamburg'),
('20010', 'Hamburg'),
('20115', 'Hamburg'),
('20123', 'Hamburg'),
('20134', 'Hamburg'),
('20200', 'Hamburg'),
('20500', 'Hamburg'),
('40120', 'Düsseldorf'),
('41088', 'Mülheim'),
('44787', 'Bochum'),
('45233', 'Duisburg'),
('45234', 'Duisburg'),
('45250', 'Duisburg'),
('45721', 'Halern'),
('47055', 'Duisburg'),
('49179', 'Ostercappeln'),
('50668', 'Köln'),
('50733', 'Köln'),
('50735', 'Köln'),
('50999', 'Köln'),
('51103', 'Köln'),
('51143', 'Köln'),
('51200', 'Köln'),
('51373', 'Leverkusen'),
('51379', 'Leverkusen'),
('51465', 'Bergisch Gladbach'),
('51503', 'Rösrath'),
('52373', 'Leverkusen'),
('53332', 'Bornheim'),
('56206', 'Krefeld'),
('59302', 'Oelde'),
('60123', 'Frankfurt'),
('80000', 'München'),
('80099', 'München'),
('80100', 'München'),
('80123', 'München'),
('80200', 'Berlin'),
('80215', 'München'),
('80500', 'München'),
('80797', 'München'),
('80999', 'München'),
('86489', 'Deisenhausen'),
('88353', 'Kiülegg'),
('88376', 'Königseggwald'),
('95100', 'Selb'),
('96247', 'Michelau');


CREATE TABLE mitarbeiter (
  MitarbeiterID int NOT NULL,
  Nachname varchar(30) NOT NULL,
  Vorname varchar(30) NOT NULL,
  Geschlecht varchar(1) NOT NULL,
  Strasse varchar(30) NOT NULL,
  Hausnummer varchar(10) NOT NULL,
  PLZ varchar(5) NOT NULL,
  Tel varchar(20) NOT NULL,
  Geburtsdatum date NOT NULL
) ;


INSERT INTO mitarbeiter (MitarbeiterID, Nachname, Vorname, Geschlecht, Strasse, Hausnummer, PLZ, Tel, Geburtsdatum) VALUES
(1324, 'Anger', 'Anne', 'w', 'Aduchtstraße', '10', '50668', '0221/2134453', '1960-09-13'),
(1326, 'Anger', 'Sebastian', 'm', 'Aduchtstraße', '10', '50668', '0221/2134453', '1957-10-12'),
(1455, 'Hellkuhl', 'Hermann', 'm', 'Neusser Wall ', '4', '50668', '0221/224366', '1964-02-02'),
(1477, 'Elisabeth', 'Deele', 'w', 'Amsterdamer Straße ', '144', '50735', '0221/4390901', '1968-03-01'),
(1503, 'Kastens', 'Sarah', 'w', 'Bahnhosstraße', '22', '51379', '0214/481230', '1979-04-02'),
(1504, 'Kramer', 'Lars', 'm', 'Barmer Straße', '3', '51373', '0214/481231', '1971-04-09'),
(1621, 'Renze', 'Daniela', 'w', 'Carl-Leverkus-Straße', '17', '52373', '0214/878899', '1967-01-29'),
(1634, 'Hansen', 'Susanne', 'w', 'Hauptstraße ', '144', '51465', '02202/239626', '1991-07-27'),
(1658, 'Terben-Huth', 'Gerrit', 'm', 'Bergstraße', '79', '50999', '02236/61049', '1981-11-19'),
(1672, 'Trebot', 'Susanne', 'w', 'Turmstraße', '14', '50733', '0221/4123456', '1990-12-18'),
(1688, 'Engel', 'Franz', 'm', 'Am Sommerberg', '32', '51503', '02205/2454', '1949-05-01'),
(1698, 'Upper', 'Jürgen', 'm', 'Großhecker Weg ', '33', '51503', '02205/79887', '1962-05-02'),
(1704, 'Hetzner', 'Hans', 'm', 'Schottgasse', '2', '53332', '02222/864020', '1966-08-30'),
(1712, 'Gerritzen', 'Claudia', 'w', 'Kalker Hauptstraße ', '119', '51103', '0221/5644412', '1985-06-30'),
(1718, 'Kinnunen', 'Eva', 'w', 'An den Linden', '8', '50668', '0221/586652', '1989-04-14'),
(1719, 'Zachow', 'Horst', 'm', 'An den Linden', '14', '50668', '0221/555341', '1983-04-03'),
(1738, 'Schämmer', 'Pascal', 'm', 'Am Anger', '4', '51143', '0221/878998', '1952-01-13'),
(1746, 'Mainz', 'Karin', 'w', 'Heerstraße ', '8', '51143', '0221/8866434', '1954-10-31');





</code>
'''12	Auswahlabfragen'''
'''12.1	Auswahlabfragen vom Typ Projektion'''

- Es wird eine Liste mit allen Daten aus der Kundentabelle benötigt. 
<code id="53a531ef53487" hidden >SELECT * FROM Kunde;</code>

<run id="53a42df84d55d" ></run>


- Es wird eine Liste aller Kunden benötigt, die die Kundennummer und den Nachnamen enthält.
<code id="53a531ef535b3" hidden >SELECT KundenID, Nachname FROM Kunde;
</code>
<run id="53a42df84d658" ></run>

- Es wird eine Liste aller Kunden benötigt, die die Kundennummer, den Nachnamen und den Vornamen enthält.
<code id="53a531ef53719"  hidden >SELECT KundenID, Nachname FROM Kunde;
</code>
<run id="53a42c0a695d6"></run>


'''12.2	Auswahlabfragen vom Typ Selektion'''

- Es wird der Artikels 101002 gesucht.
<code id="53a44a295bb10" hidden>SELECT * FROM Artikel 
WHERE ArtikelID = 101002;
</code>

<run id="53a42c0a6967b"></run>

- Es werden alle Artikel mit einem VkPreis ab 500 Euro gesucht. 
<code id="53a44a295bbb7" hidden>SELECT * FROM Artikel 
WHERE VKPreis >= 500;
</code>
<run id="53a42c0a69732"></run>

- Es werden alle Aufträge der letzten 3 Tage gesucht
<code id="53a44a295bc5e" hidden>SELECT * FROM AUFTRAG
WHERE TIMESTAMPDIFF(SQL_TSI_Day,Auftragsdatum, CURDATE()) >=3;
</code>
<run id="53a42c0a697ed"></run>


'''12.3	Auswahlabfragen mit Sortierung'''

-  Es wird eine Liste gewünscht, in welcher die Kundennummer und der Nachname des Kunden aufsteigend sortiert angezeigt werden
<code id="53a44a295bd13" hidden>SELECT KundenID, Nachname FROM Kunde
ORDER BY Nachname;
</code>

<run id="53a430aa6cb0a"></run>

- Es wird eine Liste mit den Aufträgen benötigt, die absteigend nach den Auftragsnummern sortiert ist.
<code id="53a44a295be53" hidden>SELECT AuftragID, KundenID, Auftragsdatum FROM AUFTRAG
ORDER BY AuftragID DESC;
</code> 
<run id="53a430aa6cbca"></run>


'''12.4	Auswahlabfragen mit Bedingungen'''

- Es wird eine Übersicht über diejenigen Mitarbeiter gewünscht, die vor 1960 geboren sind.
<code id="53a533d0d8007"  hidden>SELECT MitarbeiterID, Nachname, Geburtsdatum
FROM Mitarbeiter
WHERE Geburtsdatum <'1960-01-01';
</code>
<run id="53a430aa6cc73"></run>

- Es werden alle Kunden gesucht, die aus dem Postleitzahlbereich 4 kommen.
<code id="53a44a295bf1f" hidden>SELECT * FROM Kunde 
WHERE PLZ LIKE '4%';
</code> 
<run id="53a430aa6cd29"></run>

- Es werden alle Kunden gesucht, deren Nachnamen mit „Schmi“ beginnen.

<code id="53a529e64a489" hidden>SELECT KundenID, Nachname
FROM Kunde 
WHERE Nachname LIKE 'Schmi%';</code>


<run id="53a430aa6ce42"></run>


'''12.5	Abfragen mit Bereichsbeschränkungen (BETWEEN)'''

- Es werden alle Mitarbeiter gesucht, die zwischen 1970 und 1990 geboren sind. 
<code id="53a5348b08c15" hidden>SELECT MitarbeiterID, Nachname, Geburtsdatum
FROM Mitarbeiter
WHERE Geburtsdatum BETWEEN '1970-01-01' AND '1990-12-31';
</code>
<run id="53a4324fa91bc"></run>

- Es werden alle Mitarbeiter gesucht, die zwischen 1980 und 1990 (einschließlich) geboren wurden.
<code id="53a5348b08d73" hidden>SELECT Nachname, Vorname, Geburtsdatum
FROM Mitarbeiter
WHERE Geburtsdatum >'1980-01-01' AND GebDat < '1991-01-01';
</code>
<run id="53a4324fa9301"></run>

- Es werden alle Mitarbeiter mit den Anfangsbuchstaben ‚'A' bis 'E' und   'K' bis  'M' gesucht. 
<code id="53a529e64a79b" hidden>SELECT MitarbeiterID, Nachname, Vorname
FROM Mitarbeiter
WHERE Nachname BETWEEN 'A' and 'F' OR Nachname BETWEEN 'K' AND 'N';
</code>
<run id="53a4324fa9430"></run>


'''12.6	Abfragen mit Einschränkungen auf Listenwerte (IN)'''

- Im Lager werden alle Artikel gesucht, die eine Länge von 60, 80 bzw. 100 cm haben.
<code id="53a529e64a8e0" hidden>SELECT ArtikelID, Beschreibung, Laenge
FROM Artikel
WHERE Laenge IN(60, 80, 100);
</code>
<run id="53a4324fa952c"></run>


'''12.7	Abfragen mit zusammengesetzten Bedingungen (AND, OR)'''

- Es wird ein Kunde gesucht. Eine Telefonnotiz wurde irrtümlich zerrissen. Auf dem Papier sind vom Kunden  noch der Anfangsbuchstabe 'M' sowie ein Teil des Ansprechpartners „don“ zu erkennen. 
<code id="53a529e64a9ea" hidden>Select KundenID, Nachname, Ansprechpartner
FROM Kunde 
WHERE Nachname LIKE 'M%'
AND Ansprechpartner Like '%don%' ;
</code>
<run id="53a4324fa9629"></run>

- Es werden alle Mitarbeiterinnen, die nicht aus dem Postleitzahlbereich „8“ sind, gesucht.<code id="53a529e64ab16" hidden>SELECT * FROM Mitarbeiter
where Geschlecht='w'
and PLZ BETWEEN '00000' AND '79999' OR PLZ BETWEEN '90000' AND '99999';
</code>
<run id="53a4324fa97dc"></run>

- Es werden alle Kunden aus den Postleitzahlbereichen „2“ und „5“ gesucht. 
<code id="53a44f2c733a2" hidden>Select * FROM Kunde 
WHERE PLZ LIKE '2%' OR PLZ LIKE '5%';
</code>
<run id="53a4324fa992c"></run>


'''12.8	Abfragen mit verneinten Bedingungen''' 

Es werden alle Mitarbeiter gesucht, die nicht aus Köln kommen (Telefon-Vorwahl 0221). 
<code id="53a44f2c73491" hidden>SELECT * FROM Kunde
WHERE NOT PLZ= '8000';
</code>
<run id="53a4324fa9a3f"></run>

- Es werden alle Kunden gesucht, die keine Ansprechpartner haben. 
<run id="53a4324fa9b46"></run>


'''13	Abfragen über mehrere Tabellen (Join-Abfragen)'''

'''13.1	Inner-Join-Abfragen'''

- Es wird eine Liste aller Kunden benötigt. In dieser Liste soll zur besseren Übersicht neben der PLZ auch der Ort angeführt werden.
<code id="53a53240ec206" hidden>SELECT Kunde.KundenID, Kunde.Nachname, Kunde.PLZ, Ort.Ort As Ort FROM Kunde
INNER JOIN Ort
ON Kunde.PLZ = Ort.PLZ; </code>
<run id="53a4324fa9c4c"></run> 

- Es wird eine Liste mit allen Aufträgen der Kunden benötigt. 
<code id="53a44f2c7362a" hidden>SELECT Kunde.KundenID, Kunde.Nachname, Auftrag.AuftragID, Auftrag.Auftragsdatum
FROM Kunde
INNER JOIN Auftrag
ON Kunde.KundenID = Auftrag.KundenID;
</code>
<run id="53a4324fa9d49"></run>

- Es wird eine Liste aller Aufträge mit den jeweiligen Auftragspositionen benötigt. 
<code id="53a529e64ac2d" hidden>
SELECT Kunde.KundenID, Kunde.Nachname, Auftrag.AuftragID, Auftrag.Auftragsdatum FROM Kunde
INNER JOIN Auftrag
ON Kunde.KundenID = Auftrag.KundenID;</code>
<run id="53a4324fa9e58"></run>


'''13.2	Outer-Join-Abfragen'''

- Es wird eine Liste aller Kundenaufträge benötigt. Dabei sollen auch die Kunden angezeigt werden, für die keine Aufträge vorliegen haben. 
<code id="53a529e64ad36" hidden>SELECT Auftrag.AuftragID, Auftrag.Auftragsdatum, Auftrag.KundenID, Auftragsposition.ArtikelID, Auftragsposition.Anzahl
FROM Auftrag
INNER JOIN Auftragsposition
ON Auftrag.AuftragID = Auftragsposition.AuftragID;
</code>
<run id="53a4324fa9f9d"></run>

- Es wird eine Liste mit den Artikeln der Artikelgruppen gewünscht. Dabei sollen auch die Artikelgruppen angezeigt werden, denen keine Artikel zugewiesen sind. 
<code id="53a529e64aeb3" hidden>SELECT Artikelgruppe.ArtikelgruppenID, Artikelgruppe.Bezeichnung,Artikel.ArtikelID, Artikel.Beschreibung
FROM Artikel
RIGHT JOIN Artikelgruppe ON Artikel.ArtikelgruppenID = Artikelgruppe.ArtikelgruppenID;
</code>
<run id="53a4324faa0ee"></run>


''' 14	Abfragen mit Berechnungen'''

- Es wird eine Liste mit allen Aufträgen und Auftragspositionen gewünscht.
<code id="53a529e64affa" hidden>SELECT Auftrag.AuftragID, Auftrag.Auftragsdatum, Auftrag.KundenID, Auftragsposition.ArtikelID,Auftragsposition.Anzahl,Auftragsposition.VKPreis, Auftragsposition.Anzahl*Auftragsposition.VKPreis AS Gesamtpreis
FROM Auftrag
INNER JOIN Auftragsposition
ON Auftrag.AuftragID =Auftragsposition.AuftragID;
</code>
<run id="53a4324faa1fc"></run>

- Es wird eine Mitarbeiterliste benötigt, die in einer zusätzlichen Spalte das Alter der Mitarbeiter anzeigt. 
<code id="53a529e64b108" hidden>SELECT Nachname, Geburtsdatum, TIMESTAMPDIFF(SQL_TSI_YEAR,Geburtsdatum,CURDATE()) AS Alter FROM Mitarbeiter
</code>
<run id="53a4324faa336"></run>


'''15	Abfragen mit Gruppierungen'''

- Es wird eine Liste mit der Anzahl der Artikel je Artikelgruppe gewünscht. 
<code id="53a529e64b214" hidden>SELECT ArtikelgruppenID,COUNT(ArtikelID) AS AnzahlArtikel
FROM Artikel
GROUP BY ArtikelgruppenID;
</code>
<run id="53a4324faa46f"></run>

- Es wird eine Liste benötigt, die anzeigt, wie viele Kunden aus den einzelnen Postleitzahl-Gebieten stammen. Die Gebiete werden anhand der ersten zwei Stellen der Postleitzahl gruppiert. 
<code id="53a529e64b34b" hidden>SELECT LEFT(PLZ,2) AS PLZGebiet,COUNT(KundenID) AS AnzahlKunden
FROM Kunde
GROUP BY LEFT(PLZ,2);
</code>
<run id="53a4324faa58d"></run>

- Es wird eine Liste mit den Gesamtumsätzen der einzelnen Aufträge gewünscht.
<code id="53a529e64b4b4" hidden>SELECT AuftragID, COUNT(ArtikelID) AS AnzahlArtikel, SUM(VKpreis*Anzahl)AS Gesamtumsatz
FROM Auftragsposition
GROUP BY AuftragID;
</code>
<run id="53a4324faa6b1"></run>

- Es wird eine Liste mit den Umsätzen der einzelnen Kunden benötigt. 
<code id="53a529e64b5cd" hidden>SELECT Kunde.KundenID, Kunde.Nachname, COUNT(Auftrag.AuftragID) AS AnzahlAuftraege, SUM(Auftragsposition.VKPreis*Auftragsposition.Anzahl) AS Umsatz
FROM Kunde
INNER JOIN Auftrag
ON Auftrag.KundenID = Kunde.KundenID
INNER JOIN Auftragsposition
ON Auftrag.AuftragID = Auftragsposition.AuftragID
GROUP BY Kunde.KundenID, Kunde.Nachname
ORDER BY Kunde.KundenID, Kunde.Nachname;
</code>
<run id="53a4324faa8a2"></run>


'''15.1	Die COUNT()-Funktion'''

- Es wird die Anzahl der in der Datenbank verwalteten Kunden benötigt. #
<run id="53a4324faaa3a"></run>

- In der Tabelle Auftragsposition wird die Anzahl der Aufträge gesucht. 
<code id="53a529e64b6fd" hidden>SELECT COUNT(DISTINCT AuftragID) AS AnzahlAuftraege
FROM Auftragsposition;
</code>
<run id="53a4324faac1e"></run>

- Es wird eine Liste mit den PLZ gesucht, aus denen die Kunden kommen
SELECT DISTINCT PLZ
FROM Kunde;

<run id="53a4324faad36"></run>


'''15.2	Die HAVING-Klausel'''

- Es wird eine Liste gesucht mit der Anzahl der männlichen und weiblichen Kunden aus München (PLZ 80000).
<code id="53a529e64b83d" hidden>SELECT PLZ, Anrede,COUNT(Kunde.KundenID) AS AnzahlKunden
FROM Kunde 
WHERE PLZ = '80000'
GROUP BY PLZ, Anrede
HAVING COUNT(Kunde.KundenID)>=2;

</code>
<run id="53a4324faae6b"></run>

- Es wird eine Liste gesucht mit den PLZ der Orte, in denen mehr als zwei Kunden aus München (PLZ 80000) wohnen.
<code id="53a529e64b974" hidden>SELECT PLZ, Anrede, COUNT(Kunde.KundenID)AS AnzahlKunden
FROM Kunde 
WHERE Anrede='Frau'
GROUP BY PLZ, Anrede
HAVING COUNT(Kunde.KundenID)>2;
</code>
<run id="53a4324fab104"></run>

- Es sollen alle Artikelgruppen angezeigt werden, die mehr als zwei Artikel haben.
<code id="53a529e64ba88" hidden>SELECT ArtikelgruppenID, COUNT(ArtikelgruppenID) AS AnzahlArtikel
FROM Artikel
GROUP BY ArtikelgruppenID
HAVING COUNT(ArtikelgruppenID) >1;
</code>
<run id="53a4324fab5e5"></run>