Aufgaben (Datenstruktur Gebäudereinigung)



Ähnliche Dokumente
Datenbanken (Fallstudie Gebäudereinigung) Dieter Blume EDV-Organisation e.k. Seite 1 von 8

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Informatik 12 Datenbanken SQL-Einführung

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Abfragen: Grundbausteine

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Aufgabensammlung SQL SW4 1. Einfache Anfragen

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Abfrage-Befehle in MySQL -diverse Funktionen -

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

Datenexport aus JS - Software

Praktikum Datenbanken. 1. Erstellen Sie eine Abfrage, die die gesamte Tabelle PC ausgibt

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Datenbanken Microsoft Access 2010

Waimea Phone Monitor. Handbuch. Anzeige von eingehenden Anrufen auf Telefonanlagen mit TAPI-Interface

Whitepaper. Produkt: combit Relationship Manager. Einbindung externer FiBu-/Warenwirtschaftsdaten. combit GmbH Untere Laube Konstanz

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

So gehts Schritt-für-Schritt-Anleitung

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Warenwirtschaft Verkauf Einkauf Projektverwaltung Artikelverwaltung Kundenspezifische Artikel Verwaltung der Serien- u. Chargennummern Lagerverwaltung

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Stand: Adressnummern ändern Modulbeschreibung

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Wie erreiche ich was?

Projektzeit erfassen. Allgemeines. Projektzeit erfassen - Maske. Erklärung der Tabellenspalten. In Arbeit!

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

euro-bis Import von Bestellungen aus Buch- und Aboauskunft Stand

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

7. Übung - Datenbanken

Export: Schnittstelle Buchungsdaten

MIN oder MAX Bildung per B*Tree Index Hint

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Fallbeispiel: Eintragen einer Behandlung

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

IOM. Office. V Lagerverwaltung Fassungen und Sonnenbrillen. IOM Software GmbH 2005 / 2006

)XQNWLRQVWDVWH8PEXFKHQ

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Erstellen einer Datenbank. Datenbankabfragen

Beispiel 1: Filmdatenbank

1. So beginnen Sie eine Kalkulation

myfactory.go! - Verkauf

Vorbereitung auf die SEPA-Umstellung

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Dokumentenverwaltung

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Erstellen von x-y-diagrammen in OpenOffice.calc

Shopware 4.1 Kategorien

7.3 Einrichtung 13. Monatslohn. Auszahlung Ende Jahr / Ende der Beschäftigung

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Beispiele für Datenbank-Struktur-Probleme

GSD-Radionik iradionics Android-App

Adresse suchen. Telefon (Adressen) Gespräche (Adressen)

Datenexport mit orgamax

Ich möchte meine Beitragsnachweise nach dem vereinfachten Schätzverfahren erstellen.

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Views in SQL. 2 Anlegen und Verwenden von Views 2

Beispiel(unten ist der Spielfeldrand):

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Ablaufbeschreibung für den

Professionelle Seminare im Bereich MS-Office

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Das Modul ARTIKEL-BARCODE ermöglicht den Druck von Barcode-Etiketten der EAN-Codes 8 und 13.

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Fachbereich Wirtschaftswissenschaften Campus Sankt Augustin

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

novatime - Auftragsdatenerfassung / Projektzeiterfassung (ADE)

Gezielt über Folien hinweg springen

Programmteil Bautagebuch

Teaser-Bilder erstellen mit GIMP. Bildbearbeitung mit GIMP 1

INTEGRA Finanzbuchhaltung Jahresabschluss Jahresabschluss 2014

EvaSys-Export (Stand )

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

105.3 SQL-Datenverwaltung

Grundlagen Datenbanken Sommersemester 2008

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Dokument Lob erstellen

BEWERBUNG DER FAMILIE

Österreichische Trachtenjugend

Klausur PRAKTIKUM ZUR EDV 26. Juni 2001, 18:00 20:00 Uhr

Rechnung WAWI01 zu WAWI Version 3.8.6x01

Quelle: TU Dresden, Fakultät Informatik, Institut für Systemarchitektur, Professur für Datenbanken, Dr.-Ing. B. Keller

Datenbanken Kapitel 2

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterungen Fertigung Version 2015

Anleitung zum GEPA EXCEL Import Tool

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

Lehrer: Einschreibemethoden

Zählerstände online übermitteln

Datenaufbereitung in SPSS. Daten zusammenfügen

ABRECHNUNG. Frequently Asked Questions

Word 2010 Schnellbausteine

Aktuelles SEPA Umstellung

Transkript:

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 1 von 12 Aufgaben (Datenstruktur Gebäudereinigung) 1. Selektieren Sie alle Kunden (KUN) mit Kundennummer und Kurzname sowie die Anzahl der zugeordneten Objekte (OBJ) mit der Spaltenbezeichnung OBJEKTE. Sortieren Sie das Ergebnis absteigend nach der Anzahl der zugeordneten Objekte und dann aufsteigend nach Kundennummer. KUNDNR KURZNAME OBJEKTE 2 Gemeinde Verl 2 1 Letzte Ruhe 1 3 Dr. Lottchen 1 2. wie Aufgabe 1; jedoch sollen nur Kunden selektiert werden, denen mindestens zwei Objekte zugeordnet sind. KUNDNR KURZNAME OBJEKTE 2 Gemeinde Verl 2 3. Erzeugen Sie eine Sql-Abfrage zur Selektion aller Objekte mit Angabe der Person, die im Besitz der Schlüssel ist. Die Ausgabe soll die Kundennummer und den Kurznamen des Kunden mit der Spaltenbezeichnung KUNDNAME, den Ort und die Bezeichnung des Objekts sowie die Personennummer und den Kurznamen der Person mit der Spaltenbezeichnung PERSNAME umfassen. Das Ergebnis soll nach Kundennummer und Ort aufsteigend sortiert sein. KUNDNR KUNDNAME ORT BEZEICH PERSNR PERSNAME 1 Letzte Ruhe Sennelager Seniorenheim 2 M. Aslam 2 Gemeinde Verl Verl Gymnasium 3 A. Dogan 2 Gemeinde Verl Verl Grundschule 3 A. Dogan 3 Dr. Lottchen Borchen Privathaus 4. Ermitteln Sie die Gesamtmenge und den Gesamtwert bezüglich jeder einzelnen Leistung aus den Angaben in der Tabelle OLP. Der Gesamtwert ist das Produkt der Spaltenwerte OLP.MENGE und OLP.PREIS1. Benennen Sie die berechneten Spalten mit den Namen MENGE bzw. WERT. Sortieren Sie das Ergebnis absteigend nach Gesamtwert und dann aufsteigend nach Leistung. LEISTG MENGE WERT Toilettenreinigung 365 600 Bodennassreinigung 2100 594 Unterhaltsreinigung 920 558 Fensterreinigung 220 219

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 2 von 12 Lösungen 1. SELECT KUN.KUNDNR,KUN.KURZNAME,COUNT(OBJ.KUNDNR) AS OBJEKTE FROM OBJ,KUN WHERE OBJ.KUNDNR=KUN.KUNDNR GROUP BY KUN.KUNDNR,KUN.KURZNAME ORDER BY 3 DESC,1; 2. SELECT KUN.KUNDNR,KUN.KURZNAME,COUNT(OBJ.KUNDNR) AS OBJEKTE FROM OBJ,KUN WHERE OBJ.KUNDNR=KUN.KUNDNR GROUP BY KUN.KUNDNR,KUN.KURZNAME HAVING COUNT(OBJ.KUNDNR)>=2 ORDER BY 3 DESC,1; 3. Oracle SELECT OBJ.KUNDNR,KUN.KURZNAME AS KUNDNAME,OBJ.ORT,OBJ.BEZEICH, OBJ.PERSNR,PER.KURZNAME AS PERSNAME FROM OBJ,KUN,PER WHERE KUN.KUNDNR=OBJ.KUNDNR AND PER.PERSNR(+)=OBJ.PERSNR ORDER BY OBJ.KUNDNR,OBJ.ORT; ANSI SELECT OBJ.KUNDNR,KUN.KURZNAME AS KUNDNAME,OBJ.ORT,OBJ.BEZEICH, OBJ.PERSNR,PER.KURZNAME AS PERSNAME FROM OBJ JOIN KUN ON KUN.KUNDNR=OBJ.KUNDNR LEFT OUTER JOIN PER ON PER.PERSNR=OBJ.PERSNR ORDER BY OBJ.KUNDNR,OBJ.ORT; 4. SELECT LEISTG,SUM(MENGE) AS MENGE,SUM(MENGE*PREIS1) AS WERT FROM OLP GROUP BY LEISTG ORDER BY 3 DESC,1;

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 3 von 12 Aufgaben (Datenstruktur Gebäudereinigung) 5. Erzeugen Sie eine Sql-Abfrage zur Selektion des Mitarbeitereinsatzes je Objekt und Datum auf der Grundlage der in Tabelle PEP gespeicherten Daten. Die Spalten OBJ.BEZEICH und OBJ.ORT sollen, durch Leerzeichen getrennt, zu einer neuen Ausgabespalte mit dem Namen OBJEKT verknüpft werden. Gleiches gilt für die Spalten PER.VORNAME und PER.FAMNAME. Die Daten aus diesen beiden Spalten sollen zu einer neuen Spalte MITARB verknüpft werden. Je Objekt, Datum und Mitarbeiter darf nur ein Satz in der Ergebnismenge enthalten sein. Sortieren Sie die Ausgabe nach den Spalteninhalten OBJEKT, DATUM und MITARB. OBJEKT DATUM MITARB Grundschule Verl 01.07.2006 Francisco Javier Fernandez Grundschule Verl 01.07.2006 Miriam Vogel Grundschule Verl 02.07.2006 Francisco Javier Fernandez Grundschule Verl 02.07.2006 Miriam Vogel Gymnasium Verl 01.07.2006 Aishe Dogan Gymnasium Verl 01.07.2006 Gabriella Paruzzi Gymnasium Verl 02.07.2006 Aishe Dogan Gymnasium Verl 02.07.2006 Gabriella Paruzzi Privathaus Borchen 01.07.2006 Miriam Vogel Seniorenheim Sennelager 01.07.2006 Aishe Dogan Seniorenheim Sennelager 01.07.2006 Gabriella Paruzzi Seniorenheim Sennelager 01.07.2006 Murat Aslam Seniorenheim Sennelager 01.07.2006 Wolfgang Schneider Seniorenheim Sennelager 02.07.2006 Aishe Dogan Seniorenheim Sennelager 02.07.2006 Francisco Javier Fernandez Seniorenheim Sennelager 02.07.2006 Gabriella Paruzzi Seniorenheim Sennelager 02.07.2006 Miriam Vogel Seniorenheim Sennelager 02.07.2006 Murat Aslam Seniorenheim Sennelager 02.07.2006 Wolfgang Schneider 6. Ermitteln Sie aus den Daten der Tabelle OLP den Durchschnittspreis (PREIS1) jeder einzelnen Leistung. Der Durchschnittspreis soll mit der Spaltenbezeichnung PREIS ausgegeben werden. Der Betrag ist auf zwei Nachkommastellen zu runden. Die Spalte Preis soll zusätzlich die Währungseinheit EUR und die bezogene Mengeneinheit gemäß Tabelle LST (siehe ) enthalten. Das Ergebnis soll aufsteigend nach Leistung sortiert sein. LEISTG Bodennassreinigung Fensterreinigung Toilettenreinigung Unterhaltsreinigung PREIS 0,29 EUR/qm 1,08 EUR/qm 1,77 EUR/qm 0,63 EUR/qm 7. Selektieren Sie alle Mitarbeiter, die im Postleitbereich 33 ansässig sind und nicht über Festnetz und Mobilfunk telefonisch erreichbar sind. Die Ausgabe soll die Spalten PERSNR, KURZNAME und ORT umfassen sowie aufsteigend nach PERSNR sortiert sein. PERSNR KURZNAME ORT 1 G. Paruzzi Paderborn 2 M. Aslam Bielefeld 5 M. Vogel Paderborn

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 4 von 12 Lösungen 5. Oracle SELECT DISTINCT OBJ.BEZEICH ' ' OBJ.ORT AS OBJEKT, TRUNC(PEP.BEGINN) AS DATUM, PER.VORNAME ' ' PER.FAMNAME AS MITARB FROM PEP,OBJ,PER WHERE OBJ.OBJEKT=PEP.OBJEKT AND PER.PERSNR=PEP.PERSNR ORDER BY OBJEKT,DATUM,MITARB; SELECT DISTINCT OBJ.BEZEICH ' ' OBJ.ORT AS OBJEKT, CAST(PEP.BEGINN AS DATE) AS DATUM, PER.VORNAME ' ' PER.FAMNAME AS MITARB FROM PEP,OBJ,PER WHERE OBJ.OBJEKT=PEP.OBJEKT AND PER.PERSNR=PEP.PERSNR ORDER BY 1,2,3; 6. Oracle SELECT OLP.LEISTG,ROUND(AVG(OLP.PREIS1),2) ' EUR/' LST.EINHEIT AS PREIS FROM OLP,LST WHERE LST.LEISTG=OLP.LEISTG GROUP BY OLP.LEISTG,LST.EINHEIT ORDER BY OLP.LEISTG; SELECT OLP.LEISTG,CAST(AVG(CAST(OLP.PREIS1 AS DECIMAL(12,4))) AS DECIMAL(10,2)) ' EUR/' LST.EINHEIT AS PREIS FROM OLP,LST WHERE LST.LEISTG=OLP.LEISTG GROUP BY OLP.LEISTG,LST.EINHEIT ORDER BY OLP.LEISTG; 7. SELECT PERSNR,KURZNAME,ORT FROM PER WHERE PLZ BETWEEN 33000 AND 33999 AND (TELEFON IS NULL OR HANDYNR IS NULL) ORDER BY PERSNR;

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 5 von 12 Aufgaben (Datenstruktur Gebäudereinigung) 8. Selektieren Sie alle Mitarbeiter mit den Spalten PERSNR und KURZNAME, die nicht für Schlüssel zu beliebigen Objekten verantwortlich sind. Das Ergebnis soll aufsteigend nach PERSNR sortiert sein. PERSNR KURZNAME 1 G. Paruzzi 4 W. Schneider 5 M. Vogel 6 FJ. Fernandez 9. Selektieren Sie Kunde, Objekt, Mitarbeiter und die Anzahl der Einträge in Tabelle PEP, bei denen das Feld HINWEIS die Teilzeichenkette SCHMUTZ, unabhängig von Groß- oder Kleinschreibung enthält. Die Spalte KUNDE soll eine Verknüpfung aus den Spalten KUNDNR und KURZNAME, getrennt durch Leerzeichen, beinhalten. Die Spalte OBJEKT soll aus den Spalten OBJ.BEZEICH und OBJ.ORT mit einem Leerzeichen als Trennzeichen gebildet werden. Das Ergebnis soll absteigend nach Anzahl der Meldungen sortiert sein. KUNDE OBJEKT MITARB MELDUNGEN 2 Gemeinde Verl Grundschule Verl FJ. Fernandez 1 2 Gemeinde Verl Grundschule Verl M. Vogel 1 10. Selektieren Sie alle Geräte, die in der Geräteplanung für Kunden bzw. Objekte bisher nicht berücksichtigt wurden. Zukünftige Einsätze (GEP.BEGINN > aktuelles Datum) sind bei dieser Betrachtung nicht relevant. Die Ausgabe soll die Spalten GERAET und BEZEICH umfassen sowie aufsteigend nach Gerätenummer sortiert sein. GERAET BEZEICH 2 Kehrmaschine 6 Reinigungswagen komplett 7 Reinigungswagen komplett 8 Reinigungswagen komplett 9 Reinigungswagen komplett 10 Reinigungswagen komplett 12 Reinigungssatz komplett 13 Reinigungssatz komplett 14 Reinigungssatz komplett 15 Reinigungssatz komplett 16 Reinigungssatz komplett 18 Reinigungssatz komplett 19 Reinigungssatz komplett 20 Reinigungssatz komplett 21 Staubsauger 25 Staubsauger 26 Staubsauger 27 Staubsauger

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 6 von 12 Lösungen 8. SELECT PERSNR,KURZNAME FROM PER WHERE NOT EXISTS(SELECT OBJEKT FROM OBJ WHERE OBJ.PERSNR=PER.PERSNR) ORDER BY PERSNR; 9. Oracle SELECT TO_CHAR(KUN.KUNDNR) ' ' KUN.KURZNAME AS KUNDE, OBJ.BEZEICH ' ' OBJ.ORT AS OBJEKT, PER.KURZNAME AS MITARB, COUNT(PEP.OBJEKT) AS MELDUNGEN FROM PEP,KUN,OBJ,PER WHERE UPPER(PEP.HINWEIS) LIKE '%SCHMUTZ%' AND OBJ.OBJEKT=PEP.OBJEKT AND KUN.KUNDNR=OBJ.KUNDNR AND PER.PERSNR=PEP.PERSNR GROUP BY KUN.KUNDNR,KUN.KURZNAME,OBJ.BEZEICH,OBJ.ORT,PER.KURZNAME ORDER BY MELDUNGEN DESC; SELECT CAST(KUN.KUNDNR AS VARCHAR(6)) ' ' KUN.KURZNAME AS KUNDE, OBJ.BEZEICH ' ' OBJ.ORT AS OBJEKT, PER.KURZNAME AS MITARB, COUNT(PEP.OBJEKT) AS MELDUNGEN FROM PEP,KUN,OBJ,PER WHERE UPPER(PEP.HINWEIS) LIKE '%SCHMUTZ%' AND OBJ.OBJEKT=PEP.OBJEKT AND KUN.KUNDNR=OBJ.KUNDNR AND PER.PERSNR=PEP.PERSNR GROUP BY KUN.KUNDNR,KUN.KURZNAME,OBJ.BEZEICH,OBJ.ORT,PER.KURZNAME ORDER BY 4 DESC; 10. Oracle SELECT GERAET,BEZEICH FROM GER WHERE NOT EXISTS(SELECT GERAET FROM GEP WHERE GEP.GERAET=GER.GERAET AND TRUNC(BEGINN)<=TRUNC(SYSDATE)) ORDER BY GERAET; SELECT GERAET,BEZEICH FROM GER WHERE NOT EXISTS(SELECT GERAET FROM GEP WHERE GEP.GERAET=GER.GERAET AND CAST(BEGINN AS DATE)<=CAST('NOW' AS DATE)) ORDER BY GERAET;

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 7 von 12 Aufgaben (Datenstruktur Gebäudereinigung) 11. Selektieren Sie alle Tage mit Objekt und Leistung, an denen die benötigte Arbeitszeit (PEP.ARBMIN) die geplante Arbeitszeit (OLP.ANZPRS*OLP.ARBMIN) überstieg. Die Ausgabe soll die Spalten OBJEKT, LEISTG, DATUM und MEHRPROZ umfassen. Die Spalte OBJEKT soll durch Verknüpfung der Spalten OBJ.BEZEICH und OBJ.ORT, getrennt durch Leerzeichen, gebildet werden. Die Spalte MEHRPROZ soll die prozentuale Überschreitung der geplanten Arbeitszeit als gerundete Ganzzahl enthalten. Das Ergebnis soll absteigend nach der prozentualen Überschreitung sortiert werden. OBJEKT LEISTG DATUM MEHRPROZ Grundschule Verl Toilettenreinigung 01.07.2006 115 Seniorenheim Sennelager Toilettenreinigung 01.07.2006 81 Seniorenheim Sennelager Toilettenreinigung 02.07.2006 50 Seniorenheim Sennelager Fensterreinigung 02.07.2006 30 Seniorenheim Sennelager Unterhaltsreinigung 01.07.2006 19 Seniorenheim Sennelager Unterhaltsreinigung 02.07.2006 18 Privathaus Borchen Unterhaltsreinigung 01.07.2006 8 Hinweis: Diese Aufgabe ist mit nicht lösbar. 12. Erzeugen Sie eine Zusammenfassung der geleisteten Arbeitsstunden und der gefahrenen Kilometer je Person für den Monat Juli 2006. Die Ergebnismenge soll die Spalten PERSON, KURZNAME, die Summe der Arbeitsstunden mit der Spaltenbezeichnung ARBMIN und die Summe der gefahrenen Kilometer mit der Spaltenbezeichnung FAHRKM enthalten. Die Auswertung soll nur Mitarbeiter enthalten, die ihren Privat-PKW für dienstliche Fahrten benutzt haben. Das Ergebnis soll nach Personalnummer aufsteigend sortiert sein. PERSNR KURZNAME ARBMIN FAHRKM 1 G.Paruzzi 710 90 4 W.Schneider 975 30 5 M.Vogel 945 100 13. Selektieren Sie alle Objekte und Leistungen, für die Arbeitszeitrückmeldungen (PEP.ARBMIN) vorhanden sind und bei denen die Vorgabezeit (OLP.ANZPRS*OLP.ARBMIN) bisher immer überschritten wurde. Das Ergebnis soll den Kurznamen des Kunden, die Bezeichnung des Objekts und die Leistung enthalten und dementsprechend sortiert sein. KURZNAME BEZEICH LEISTG Dr. Lottchen Privathaus Unterhaltsreinigung Letzte Ruhe Seniorenheim Fensterreinigung Letzte Ruhe Seniorenheim Toilettenreinigung Letzte Ruhe Seniorenheim Unterhaltsreinigung Hinweis: Diese Aufgabe ist mit nicht lösbar.

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 8 von 12 Lösungen 11. Oracle SELECT OBJ.BEZEICH ' ' OBJ.ORT AS OBJEKT, PEP.LEISTG, TRUNC(PEP.BEGINN) AS DATUM, ROUND(SUM(PEP.ARBMIN)*100/(OLP.ARBMIN*OLP.ANZPRS)-100,0) AS MEHRPROZ FROM PEP,OBJ,OLP WHERE OBJ.OBJEKT=PEP.OBJEKT AND OLP.OBJEKT=PEP.OBJEKT AND OLP.LEISTG=PEP.LEISTG GROUP BY OBJ.BEZEICH,OBJ.ORT,PEP.LEISTG,TRUNC(PEP.BEGINN),OLP.ARBMIN,OLP.ANZPRS HAVING SUM(PEP.ARBMIN)>(OLP.ARBMIN*OLP.ANZPRS) ORDER BY MEHRPROZ DESC; Nicht lösbar, da die Funktion CAST in der Klausel GROUP-BY unzulässig ist. 12. Oracle SELECT PEP.PERSNR,PER.KURZNAME,SUM(ARBMIN) AS ARBMIN,SUM(FAHRKM) AS FAHRKM FROM PEP,PER WHERE PER.PERSNR=PEP.PERSNR AND BEGINN>=TO_DATE('01.07.2006','DD.MM.YYYY') AND BEGINN<TO_DATE('01.08.2006','DD.MM.YYYY') GROUP BY PEP.PERSNR,PER.KURZNAME HAVING SUM(FAHRKM)>0 ORDER BY PEP.PERSNR; SELECT PEP.PERSNR,PER.KURZNAME,SUM(ARBMIN) AS ARBMIN,SUM(FAHRKM) AS FAHRKM FROM PEP,PER WHERE PER.PERSNR=PEP.PERSNR AND BEGINN>='01-JUL-2006' AND BEGINN<'01-AUG-2006' GROUP BY PEP.PERSNR,PER.KURZNAME HAVING SUM(FAHRKM)>0 ORDER BY PEP.PERSNR; 13. Oracle SELECT KUN.KURZNAME,OBJ.BEZEICH,OLP.LEISTG FROM OLP,OBJ,KUN WHERE OBJ.OBJEKT=OLP.OBJEKT AND KUN.KUNDNR=OBJ.KUNDNR AND EXISTS(SELECT ARBMIN FROM PEP WHERE PEP.OBJEKT=OLP.OBJEKT AND PEP.LEISTG=OLP.LEISTG) AND OLP.ANZPRS*OLP.ARBMIN<ALL(SELECT SUM(ARBMIN) FROM PEP WHERE PEP.OBJEKT=OLP.OBJEKT AND PEP.LEISTG=OLP.LEISTG GROUP BY TRUNC(BEGINN)) ORDER BY KUN.KURZNAME,OBJ.BEZEICH,OLP.LEISTG; Nicht lösbar, da die Funktion CAST in der Klausel GROUP-BY unzulässig ist.

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 9 von 12 Aufgaben (Datenstruktur Baumarkt) 14. Selektieren Sie alle Artikel mit den Spalten ARTIKEL und BEZEICHN, bei denen der Verkaufspreis (ART.PREIS1) kleiner ist als irgendein beliebiger Einkaufspreis (LSP.PREIS1). Das Ergebnis soll aufsteigend nach Artikelnummer sortiert sein. ARTIKEL BEZEICHN 10.1001 Gartenpumpe 15. Für die Abteilung Finanzbuchhaltung soll eine gemeinsame Ergebnismenge mit allen Kreditoren (Lieferanten) und Debitoren (Kunden) erzeugt werden. Die Ausgabe soll die Spalten PKTOFIBU, KURZNAME, die Kundenbzw. Lieferantennummer mit der Bezeichnung NUMMER und eine Spalte KONTOART enthalten, die, je nach Tabelle, entweder mit der Konstanten Kunde oder mit der Konstanten Lieferant gefüllt ist. Das Ergebnis soll aufsteigend nach der Spalte PKTOFIBU und dann absteigend nach der Spalte KONTOART sortiert werden. PKTOFIBU KURZNAME NUMMER KONTOART 10001 ABZOCKER, BERLIN 1 Kunde 10002 MADGIRLS, LONDON 2 Kunde 10003 STUPIDO, ROMA 3 Kunde 10004 FRAUDEUR, PARIS 4 Kunde 10005 BRITNEY SPEARS, LA 5 Kunde 10006 BRATT PITT, NY 6 Kunde 70001 WEBER, PADERBORN 1 Lieferant 70002 MILLER, HAMILTON 2 Lieferant 70004 FOSTERS, BIRMINGHAM 4 Lieferant 70012 LAHO, BAGNEUX 3 Lieferant 16. Selektieren Sie alle Lieferanten mit den Spalten LIEFNR, KURZNAME, LAND und der zugehörigen Bezeichnung des Landes (LND.BEZEICHN). Sortieren Sie das Ergebnis aufsteigend nach Lieferantennummer. LIEFNR KURZNAME LAND BEZEICHN 1 WEBER, PADERBORN 2 MILLER, HAMILTON BM Bermudas 3 LAHO, BAGNEUX F 4 FOSTERS, BIRMINGHAM GB 17. Selektieren Sie alle Länderschlüssel mit den Spalten LANDSCHL und BEZEICHN, die Kunden oder Lieferanten zugeordnet sind und geben Sie zusätzlich die Anzahl der Verwendungen bei Kunden bzw. Lieferanten in Spalten mit den Namen KNDCOUNT bzw. LIECOUNT an. Sortieren Sie das Ergebnis nach Länderschlüssel. LANDSCHL BEZEICHN KNDCOUNT LIECOUNT BM Bermudas 1 F 1 1 GB 1 1 I 1 USA 2

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 10 von 12 Lösungen 14. SELECT ARTIKEL,BEZEICHN FROM ART WHERE PREIS1<ANY(SELECT PREIS1 FROM LSP WHERE LSP.ARTIKEL=ART.ARTIKEL) ORDER BY ARTIKEL; 15. Oracle SELECT PKTOFIBU,KURZNAME,KUNDNR AS NUMMER,'Kunde' AS KONTOART FROM KND UNION SELECT PKTOFIBU,KURZNAME,LIEFNR AS NUMMER,'Lieferant' AS KONTOART FROM LIE ORDER BY PKTOFIBU,KONTOART DESC; SELECT PKTOFIBU,KURZNAME,KUNDNR AS NUMMER, CAST('Kunde' AS VARCHAR(10)) AS KONTOART FROM KND UNION SELECT PKTOFIBU,KURZNAME,LIEFNR AS NUMMER, CAST('Lieferant' AS VARCHAR(10)) AS KONTOART FROM LIE ORDER BY 1,4 DESC; 16. Oracle SELECT LIE.LIEFNR,LIE.KURZNAME,LIE.LAND,LND.BEZEICHN FROM LIE,LND WHERE LND.LANDSCHL(+)=LIE.LAND ORDER BY LIE.LIEFNR; ANSI SELECT LIE.LIEFNR,LIE.KURZNAME,LIE.LAND,LND.BEZEICHN FROM LIE LEFT OUTER JOIN LND ON LND.LANDSCHL=LIE.LAND ORDER BY LIE.LIEFNR; 17. SELECT LANDSCHL,BEZEICHN, (SELECT COUNT(*) FROM KND WHERE KND.LAND=LND.LANDSCHL) AS KNDCOUNT, (SELECT COUNT(*) FROM LIE WHERE LIE.LAND=LND.LANDSCHL) AS LIECOUNT FROM LND WHERE (SELECT COUNT(*) FROM KND WHERE KND.LAND=LND.LANDSCHL)>0 OR (SELECT COUNT(*) FROM LIE WHERE LIE.LAND=LND.LANDSCHL)>0 ORDER BY LANDSCHL;

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 11 von 12 Aufgaben (Datenstruktur Pension) 18. Selektieren Sie alle Gäste aus der Tabelle GST, die jemals ein Zimmer belegt haben. Die Ausgabe soll die Gastnummer, sowie eine Zeichenkette aus Vorname, Leerzeichen und Familienname mit der Spaltenbezeichnung NAME beinhalten und nach Gastnummer sortiert sein. GASTNR NAME 1 Klaus Meier 2 Jutta Krause 19. Selektieren Sie die Anzahl der Belegungstage durch Gäste für alle Zimmer mit Zimmernummern im Bereich von 100 bis 200. Zimmer, die weniger als 2 Tage belegt sind, sollen unberücksichtigt bleiben. Die Ausgabe soll die Spalten ZIMMER und ANZAHL mit gleichlautender Spaltenbeschriftung enthalten und nach Anzahl der Belegungstage sortiert sein. ZIMMER ANZAHL 102 3 101 6 20. Selektieren Sie die gesamte Zimmerbelegung. Die Ausgabe soll die Spalten Zimmer, Datum sowie Name (FAMNAME) und Ort evtl. zugeordneter Gäste beinhalten und nach Zimmer und Datum sortiert sein. ZIMMER DATUM FAMNAME ORT 101 10.11.2000 Meier Paderborn 101 11.11.2000 Meier Paderborn 101 12.11.2000 Meier Paderborn 101 13.11.2000 Meier Paderborn 101 14.11.2000 Meier Paderborn 101 15.11.2000 Meier Paderborn 102 10.11.2000 Krause Bielefeld 102 11.11.2000 Krause Bielefeld 102 12.11.2000 Krause Bielefeld 102 14.11.2000 21. Selektieren Sie die Anzahl der Belegungstage je Zimmer und Gast, sofern die Zimmer maximal 7 Tage durch den selben Gast belegt sind. Es sollen auch Belegungen ohne Gastnummer (z.b. für Renovierungsarbeiten) berücksichtigt werden. Die Ausgabe soll die Zimmernummer, den evtl. zugeordneten Gast mit Nummer und Familienname (FAMNAME) sowie die Anzahl der Belegungstage, benannt als TAGE, beinhalten und nach Zimmernummer und Gastnummer sortiert sein. ZIMMER GASTNR FAMNAME TAGE 101 1 Meier 6 102 2 Krause 3 102 1 22. Selektieren Sie alle Zimmer, die mindestens 3 Tage belegt sind. ZIMMER 101 102

Datenbanken (Sql-Abfragen - Übungen) Dieter Blume EDV-Organisation e.k. Seite 12 von 12 Lösungen 18. SELECT GASTNR,VORNAME ' ' FAMNAME AS NAME FROM GST WHERE EXISTS(SELECT ZIMMER FROM BEL WHERE BEL.GASTNR=GST.GASTNR) ORDER BY GASTNR; 19. SELECT ZIMMER,COUNT(DATUM) AS ANZAHL FROM BEL WHERE ZIMMER>=100 AND ZIMMER<=200 AND GASTNR IS NOT NULL GROUP BY ZIMMER HAVING COUNT(DATUM)>1 ORDER BY 2; 20. Oracle SELECT BEL.ZIMMER,BEL.DATUM,GST.FAMNAME,GST.ORT FROM BEL,GST WHERE GST.GASTNR(+)=BEL.GASTNR ORDER BY BEL.ZIMMER,BEL.DATUM; ANSI SELECT BEL.ZIMMER,BEL.DATUM,GST.FAMNAME,GST.ORT FROM BEL LEFT OUTER JOIN GST ON GST.GASTNR=BEL.GASTNR ORDER BY BEL.ZIMMER,BEL.DATUM; 21. Oracle SELECT BEL.ZIMMER,BEL.GASTNR,GST.FAMNAME,COUNT(BEL.DATUM) AS TAGE FROM BEL,GST WHERE GST.GASTNR(+)=BEL.GASTNR GROUP BY BEL.ZIMMER,BEL.GASTNR,GST.FAMNAME HAVING COUNT(BEL.DATUM)<=7 ORDER BY BEL.ZIMMER,BEL.GASTNR; ANSI SELECT BEL.ZIMMER,BEL.GASTNR,GST.FAMNAME,COUNT(BEL.DATUM) AS TAGE FROM BEL LEFT OUTER JOIN GST ON GST.GASTNR=BEL.GASTNR GROUP BY BEL.ZIMMER,BEL.GASTNR,GST.FAMNAME HAVING COUNT(BEL.DATUM)<=7 ORDER BY BEL.ZIMMER,BEL.GASTNR; 22. SELECT ZIMMER FROM ZIM WHERE 3<=ANY(SELECT COUNT(*) FROM BEL WHERE BEL.ZIMMER=ZIM.ZIMMER);