AKSA-EFI/AutoFilter ExcelMexcel

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
= Übung: Excel's Autofilter mit SQL nachstellen = 

Diese Übung basiert auf den Daten von Helmut Mittelbach, [http://www.excelmexel.de/ www.excelmexel.de].

<code id="4cac7bac65c73" hidden>
DROP TABLE IF EXISTS mitarbeiter CASCADE ;
CREATE TABLE mitarbeiter (
  name VARCHAR(255) DEFAULT NULL,
  vorname VARCHAR(255) DEFAULT NULL,
  abteilung VARCHAR(255) DEFAULT NULL,
  gehalt DOUBLE DEFAULT NULL
);

INSERT INTO mitarbeiter VALUES ('Thomann', 'Bert', 'VK', '2890.50');
INSERT INTO mitarbeiter VALUES ('Seeler', 'Gerhard', 'VK', '3645.94');
INSERT INTO mitarbeiter VALUES ('Saftig', 'Herrmann', 'VK', '3950.00');
INSERT INTO mitarbeiter VALUES ('Kuntz', 'Stefan', 'VK', '3854.21');
INSERT INTO mitarbeiter VALUES ('Konrad', 'Friedrich', 'VK', '3820.00');
INSERT INTO mitarbeiter VALUES ('Gründel', 'Georg', 'VK', '3246.44');
INSERT INTO mitarbeiter VALUES ('Hansen', 'Gregor', 'LA', '4280.00');
INSERT INTO mitarbeiter VALUES ('Trautner', 'Karl', 'LA', '4320.00');
INSERT INTO mitarbeiter VALUES ('Atzenger', 'Dietrich', 'LA', '3800.00');
INSERT INTO mitarbeiter VALUES ('Schreiber', 'Philip', 'EK', '2731.00');
INSERT INTO mitarbeiter VALUES ('Mößner', 'Gerhard', 'EK', '3856.55');
INSERT INTO mitarbeiter VALUES ('Klein', 'Dietrich', 'EK', '3923.00');
INSERT INTO mitarbeiter VALUES ('Braatz', 'Matthias', 'EK', '5833.00');
INSERT INTO mitarbeiter VALUES ('Braun', 'Thomas', 'EK', '4188.22');
INSERT INTO mitarbeiter VALUES ('Heinicke', 'Michael', 'DV', '3560.00');
INSERT INTO mitarbeiter VALUES ('Wessing', 'Holger', 'DP', '3612.00');
INSERT INTO mitarbeiter VALUES ('Muscheid', 'Eberhard', 'DP', '3500.00');
INSERT INTO mitarbeiter VALUES ('Hark', 'Stefan', 'BH', '6215.00');
INSERT INTO mitarbeiter VALUES ('Traunert', 'Stefan', 'BH', '2921.84');
INSERT INTO mitarbeiter VALUES ('Schulz', 'Martin', 'BH', '3432.00');
INSERT INTO mitarbeiter VALUES ('Meier', 'Heinz', 'BH', '3550.00');
INSERT INTO mitarbeiter VALUES ('Binsen', 'Hans', 'BH', '3842.45');
INSERT INTO mitarbeiter VALUES ('Weber', 'Eberhard', 'AV', '3428.00');
INSERT INTO mitarbeiter VALUES ('Pfaff', 'Karl', 'AV', '4250.00');
INSERT INTO mitarbeiter VALUES ('Klein', 'Peter', 'AV', '4250.00');

</code>

== Alle Mitarbeiter anzeigen==
<eval id="4cac7bac65ce2">
SELECT * FROM mitarbeiter;
</run>


== Wer verdient am meisten? ==

<eval id="4cac7f163df88"></run>

<popup name="Lösung"><eval id="4cac7ee967298">
SELECT vorname, name FROM mitarbeiter ORDER BY gehalt DESC LIMIT 1;
</run></popup>


== Welches sind die drei Top-Verdiener? ==

<eval id="4cac7fb4c428d"></run>

<popup name="Lösung"><eval id="4cac7fb4c4335">
SELECT vorname, name FROM mitarbeiter ORDER BY gehalt DESC LIMIT 3;
</run></popup>


== Welche Gehaltsumme haben die 10 Top-Verdiener? ==

<eval id="4cac7fb4c43d4"></run>

<popup name="Lösung"><eval id="4cac7fb4c4469">
SELECT SUM(Gehalt) FROM (SELECT Gehalt FROM Mitarbeiter ORDER BY Gehalt DESC LIMIT 10)
</run></popup>


== Wieviele Mitarbeiter liegen im letzten 10%-Gehalts-Bereich?  ==

<eval id="4cac7fb4c451b"></run>

<popup name="Lösung"><eval id="4cac7fb4c46f8">
SELECT COUNT(*) AS "Anzahl Mitarbeiter" FROM Mitarbeiter 
WHERE Gehalt <= (SELECT MIN(Gehalt) + (MAX(Gehalt)-MIN(Gehalt))*0.1 FROM Mitarbeiter);
</run></popup>

== Ordnen Sie die Mitarbeiter der Abteilung VK nach absteigendem Gehalt! ==

<eval id="4cac7fb4c47e4"></run>

<popup name="Lösung"><eval id="4cac7fb4c4891">
SELECT * FROM Mitarbeiter WHERE Abteilung = 'VK' ORDER BY Gehalt DESC
</run></popup>

== Wieviele Mitarbeiter von Abteilung EK haben mehr als 3000,-€? ==

<eval id="4cac7fb4c4933"></run>

<popup name="Lösung"><eval id="4cac7fb4c49ec">
SELECT COUNT(*)AS "Anzahl Mitarbeiter" FROM Mitarbeiter WHERE Abteilung = 'EK' AND Gehalt > 3000
</run></popup>

== Ermitteln Sie alle Mitarbeiter, die ein "m" in ihrem Vornamen haben! ==

<eval id="4cac7fb4c4a9d"></run>

<popup name="Lösung"><eval id="4cac7fb4c4b41">
SELECT * FROM Mitarbeiter WHERE Vorname LIKE '%m%'
</run></popup>

== Ermitteln Sie alle Mitarbeiter, die an der zweiten Stelle ihres Nachnamens ein "e" stehen haben! ==

<eval id="4cac7fb4c4be8"></run>

<popup name="Lösung"><eval id="4cac7fb4c4c8e">
SELECT * FROM Mitarbeiter WHERE Name LIKE '_e%'
</run></popup>

== Speichern Sie die Filteransichten A-F unter den Namen A-F! ==

<eval id="4cac7fb4c4d36"></run>

<popup name="Lösung"><eval id="4cac7fb4c4e00">
CREATE VIEW "A-F" AS SELECT * FROM Mitarbeiter WHERE Name LIKE 'A%' OR Name LIKE 'B%' OR Name LIKE 'C%' OR Name LIKE 'D%' OR Name LIKE 'F%';
SELECT * FROM "A-F";
</run></popup>

== Suchen Sie alle Mitarbeiter der Abteilungen DP, LA und VK, deren Gehalt zwischen 4000,-€ und 5000,-€ liegt! ==

<eval id="4cac7fb4c4eaf"></run>

<popup name="Lösung"><eval id="4cac7fb4c4f5a">
SELECT * FROM Mitarbeiter WHERE Gehalt >= 4000 AND Gehalt <= 5000 AND 
(Abteilung = 'DP' OR Abteilung = 'LA' OR Abteilung = 'VK')
</run></popup>