<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<game>
    <head>
        <title>Baufirma</title>
        <teaser>Du bist Bauunternehmer und ein Investor stellt dir einige Fragen...

Schwierigkeitsgrad: Sehr hoch</teaser>
        <copyright>&#xA9; 2024 Niklas J., Finn V., Lasse M., Bennet W.</copyright>
    </head>
    <scenes>
        <text-scene>
            <text>*Du leitest eine Baufirma*</text>
        </text-scene>
        <text-scene>
            <text>&#x201E;Ich bin Investor und h&#xE4;tte ein paar Fragen zu dieser Firma, weil ich sie kaufen m&#xF6;chte.&#x201C;</text>
        </text-scene>
        <text-scene>
            <text>&#x201E;Bitte beantworten Sie mir diese Fragen mit Hilfe Ihrer Unternehmensdatenbank.&#x201C;</text>
        </text-scene>
        <text-scene>
            <text>&#x201E;Vielen Dank f&#xFC;r Ihre Hilfe!&#x201C;</text>
        </text-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="true" are-col-names-relevant="true">
            <text>&#x201E;Probier doch mal die folgende Abfrage aus: SELECT * FROM mitarbeiter&#x201C;</text>
            <sql-solution>SELECT *
FROM   mitarbeiter</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie viele Bauprojekte gibt es insgesamt?&#x201C;</text>
            <sql-solution>SELECT COUNT(*)
FROM   projekt</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie hei&#xDF;t der Mitarbeiter, der am meisten verdient?&#x22;</text>
            <sql-solution>SELECT   name
FROM     mitarbeiter
ORDER BY gehalt DESC
LIMIT 1</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie viel kostet das Material, das f&#xFC;r das Projekt in Berlin bestellt wurde?&#x201C;</text>
            <sql-solution>SELECT SUM(preis*anzahl)
FROM   bestellung
       JOIN material ON bestellung.material_id = material.material_id
       JOIN projekt  ON bestellung.projekt_id = projekt.projekt_id
WHERE  standort = &#x27;Berlin&#x27;</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Welches Projekt hat den h&#xF6;chsten Budgetanteil f&#xFC;r Materialien?&#x201C;</text>
            <sql-solution>SELECT   projekt.name,
         (SUM(preis *anzahl) /budget) *100 AS prozent
FROM     bestellung
         JOIN material ON bestellung.material_id = material.material_id
         JOIN projekt  ON bestellung.projekt_id  = projekt.projekt_id
GROUP BY projekt.name, budget
ORDER BY prozent DESC
LIMIT 1</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie viele Mitarbeiter arbeiten an keinem Projekt?&#x22;</text>
            <sql-solution>SELECT COUNT(*)
FROM   mitarbeiter
WHERE  projekt_id IS NULL</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie viele Mitarbeiter haben einen h&#xF6;heren Gehalt als ihr Manager?&#x22;</text>
            <sql-solution>SELECT COUNT(DISTINCT m1.mitarbeiter_id)
FROM   mitarbeiter m1
       JOIN mitarbeiter m2 ON m1.projekt_id =m2.projekt_id
WHERE  m1.beruf &#x3C;&#x3E; m2.beruf 
       AND m1.gehalt &#x3C; m2.gehalt</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie hoch ist der durchschnittliche Preis pro Einheit f&#xFC;r jedes Material,
         das f&#xFC;r das Projekt in Hamburg bestellt wurde?&#x22;</text>
            <sql-solution>SELECT   material.name, AVG(preis) AS durchschnitt
FROM     bestellung
         JOIN material ON bestellung.material_id = material.material_id
         JOIN projekt  ON bestellung.projekt_id = projekt.projekt_id
WHERE    standort = &#x27;Hamburg&#x27;
GROUP BY material.name</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie viele Projekte haben mehr als zwei Mitarbeiter mit demselben Beruf?&#x22;</text>
            <sql-solution>SELECT   COUNT(DISTINCT projekt_id)
FROM     mitarbeiter
GROUP BY projekt_id, beruf
HAVING   COUNT(*) &#x3E; 2</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <select-scene is-row-order-relevant="false" is-col-order-relevant="false" are-col-names-relevant="false">
            <text>&#x201E;Wie hoch ist der Gesamtumsatz der Baufirma, aufgeschl&#xFC;sselt nach Standort und Status der Projekte?&#x22;</text>
            <sql-solution>SELECT   standort, status, SUM(budget) AS umsatz
FROM     projekt
GROUP BY standort, status</sql-solution>
            <sql-placeholder></sql-placeholder>
        </select-scene>
        <text-scene>
            <text>Herzlichen Gl&#xFC;ckwunsch! Du hast gewonnen!</text>
        </text-scene>
    </scenes>
    <initial-sql-script>-- Tabelle f&#xFC;r die Bauprojekte
CREATE TABLE projekt (
  projekt_id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  standort VARCHAR(50) NOT NULL,
  budget DECIMAL(10,2) NOT NULL,
  status VARCHAR(20) NOT NULL
);

-- Tabelle f&#xFC;r die Mitarbeiter
CREATE TABLE mitarbeiter (
  mitarbeiter_id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  gehalt DECIMAL(10,2) NOT NULL,
  beruf VARCHAR(20) NOT NULL,
  projekt_id INT REFERENCES projekt (projekt_id)
);

-- Tabelle f&#xFC;r die Materialien
CREATE TABLE material (
  material_id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  preis DECIMAL(10,2) NOT NULL,
  menge INT NOT NULL
);

-- Tabelle f&#xFC;r die Materialbestellungen
CREATE TABLE bestellung (
  bestellung_id INT PRIMARY KEY,
  datum DATE NOT NULL,
  projekt_id INT REFERENCES projekt (projekt_id),
  material_id INT REFERENCES material (material_id),
  anzahl INT NOT NULL
);

-- Einige Beispieldaten f&#xFC;r die Tabellen
INSERT INTO projekt VALUES
(1, &#x27;Wohnhaus&#x27;, &#x27;Berlin&#x27;, 500000.00, &#x27;in Bau&#x27;),
(2, &#x27;Br&#xFC;cke&#x27;, &#x27;Hamburg&#x27;, 1000000.00, &#x27;geplant&#x27;),
(3, &#x27;Schule&#x27;, &#x27;M&#xFC;nchen&#x27;, 800000.00, &#x27;fertig&#x27;);

INSERT INTO mitarbeiter VALUES
(1, &#x27;Anna M&#xFC;ller&#x27;, 3000.00, &#x27;Architektin&#x27;, 1),
(2, &#x27;Bernd Schmidt&#x27;, 2500.00, &#x27;Bauingenieur&#x27;, 2),
(3, &#x27;Carl Weber&#x27;, 2000.00, &#x27;Maurer&#x27;, 1),
(4, &#x27;Doris Klein&#x27;, 1500.00, &#x27;Sekret&#xE4;rin&#x27;, NULL),
(5, &#x27;Erik Wolf&#x27;, 1800.00, &#x27;Elektriker&#x27;, 3);

INSERT INTO material VALUES
(1, &#x27;Zement&#x27;, 5.00, 1000),
(2, &#x27;Stahl&#x27;, 10.00, 500),
(3, &#x27;Holz&#x27;, 8.00, 800),
(4, &#x27;Kabel&#x27;, 3.00, 1200),
(5, &#x27;Farbe&#x27;, 6.00, 600);

INSERT INTO bestellung VALUES
(1, &#x27;2023-11-01&#x27;, 1, 1, 100),
(2, &#x27;2023-11-02&#x27;, 1, 2, 50),
(3, &#x27;2023-11-03&#x27;, 2, 2, 100),
(4, &#x27;2023-11-04&#x27;, 3, 3, 200),
(5, &#x27;2023-11-05&#x27;, 3, 4, 300);</initial-sql-script>
</game>