SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
A
A
A
Share
Blog
Popular
SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code.
You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.
SQL code:
Upload
Copy
Format
Clear
CREATE TABLE besitzer ( besitzer_id integer PRIMARY KEY, name varchar(20), vorname varchar(20), strasse varchar(50), hausnr smallint, plz integer ); CREATE TABLE hunde ( hunde_id integer PRIMARY KEY, hunde_name varchar(20), rasse varchar(40), geschlecht char, besitzer_id integer REFERENCES besitzer(besitzer_id), CHECK (geschlecht = 'w' OR geschlecht = 'm') ); CREATE TABLE trainer ( trainer_id integer PRIMARY KEY, name varchar(20), vorname varchar(20) ); CREATE TABLE zertifikat ( zertifikat_id integer PRIMARY KEY, bezeichnung varchar(100) ); CREATE TABLE kurs ( kurs_nr integer PRIMARY KEY, kursname varchar(100), trainer_id integer REFERENCES trainer(trainer_id), zertifikat_id integer REFERENCES zertifikat(zertifikat_id) ); CREATE TABLE termin ( termin_nr integer PRIMARY KEY, datum date null, uhr time, kurs_nr integer REFERENCES kurs(kurs_nr), hunde_id integer REFERENCES hunde(hunde_id) ); CREATE TABLE hunde_zertifikat ( hunde_id integer REFERENCES hunde(hunde_id), zertifikat_id integer REFERENCES zertifikat(zertifikat_id), note numeric(8,1), PRIMARY KEY (hunde_id, zertifikat_id) ); CREATE TABLE rudel ( rudel_nr integer PRIMARY KEY, rudelname varchar(40) ); CREATE TABLE rudel_mitglied ( rudel_nr integer REFERENCES rudel(rudel_nr), mitglied_id integer REFERENCES hunde(hunde_id) ); CREATE TABLE hunderennen ( zeitraum varchar(20) PRIMARY KEY, rennname varchar(40) ); CREATE TABLE rennerergebnis ( zeitraum varchar(20) REFERENCES hunderennen(zeitraum), rudel_nr integer REFERENCES rudel(rudel_nr), endzeit time, PRIMARY KEY (zeitraum, rudel_nr) ); INSERT INTO besitzer VALUES (1, 'Holland', 'Tom', 'Alicenstr', 9, 35392); INSERT INTO besitzer VALUES (2, 'Cena', 'John', 'Breitenstr', 17, 35398); INSERT INTO besitzer VALUES (3, 'Downey', 'Robert', 'Schillerstr', 11, 35390); INSERT INTO hunde VALUES (1, 'Molly', 'Husky', 'w', 1); INSERT INTO hunde VALUES (2, 'Arthur', 'Shiba Inu', 'm', 2); INSERT INTO hunde VALUES (3, 'Petra', 'Dogge', 'm', 2); INSERT INTO hunde VALUES (4, 'Bonty', 'Dogge', 'w', 1); INSERT INTO hunde VALUES (5, 'Winter', 'Husky', 'm', 3); INSERT INTO hunde VALUES (6, 'Summer', 'Dogge', 'w', 3); INSERT INTO hunde VALUES (7, 'Autumn', 'Shiba Inu', 'm', 1); INSERT INTO hunde VALUES (8, 'Star', 'Dogge', 'w', 3); INSERT INTO hunde VALUES (9, 'Lily', 'Shiba Inu', 'w', 2); INSERT INTO trainer VALUES (1, 'Ackerman', 'Levi'); INSERT INTO trainer VALUES (2, 'D. Luffy', 'Monkey'); INSERT INTO trainer VALUES (3, 'Jaeger', 'Eren'); INSERT INTO trainer VALUES (4, 'Arlert', 'Armin'); INSERT INTO zertifikat VALUES (1, 'Bachelor of Blanket'); INSERT INTO zertifikat VALUES (2, 'Bachelor of Clicks'); INSERT INTO zertifikat VALUES (3, 'Master of Poison'); INSERT INTO zertifikat VALUES (4, 'Master of Tricks'); INSERT INTO zertifikat VALUES (5, 'Bachelor of Fetch'); INSERT INTO kurs VALUES (1, 'Grundkurs Deckentraining', 1, 1); INSERT INTO kurs VALUES (2, 'Clickertraining', 1, 2); INSERT INTO kurs VALUES (3, 'Anti-Giftkoeder-Training', 2, 3); INSERT INTO kurs VALUES (4, 'Hundetricks', 3, 4); INSERT INTO kurs VALUES (5, 'Apportieren lernen', 2, 5); INSERT INTO termin VALUES (1, '2024-01-31', now(), 1, 1); INSERT INTO termin VALUES (2, '2023-01-06', now(), 3, 4); INSERT INTO termin VALUES (3, '2023-08-24', now(), 5, 5); INSERT INTO termin VALUES (4, '2023-07-01', now(), 2, 3); INSERT INTO termin VALUES (5, '2023-07-03', now(), 2, 6); INSERT INTO hunde_zertifikat VALUES (1, 2, 3.5); INSERT INTO hunde_zertifikat VALUES (2, 3, 1.2); INSERT INTO hunde_zertifikat VALUES (2, 4, 2.0); INSERT INTO hunde_zertifikat VALUES (4, 1, 4.3); INSERT INTO hunde_zertifikat VALUES (2, 5, 3.3); INSERT INTO hunde_zertifikat VALUES (4, 5, 1.7); INSERT INTO rudel VALUES (1, 'At Least We Tried'); INSERT INTO rudel VALUES (2, 'Born Pro'); INSERT INTO rudel VALUES (3, 'Legends Never Die'); INSERT INTO rudel_mitglied VALUES (1, 1); INSERT INTO rudel_mitglied VALUES (2, 2); INSERT INTO rudel_mitglied VALUES (1, 9); INSERT INTO rudel_mitglied VALUES (3, 5); INSERT INTO rudel_mitglied VALUES (3, 4); INSERT INTO rudel_mitglied VALUES (2, 6); INSERT INTO rudel_mitglied VALUES (1, 7); INSERT INTO rudel_mitglied VALUES (2, 3); INSERT INTO rudel_mitglied VALUES (3, 8); INSERT INTO hunderennen VALUES ('20/21', 'Winter Solstice Race'); INSERT INTO hunderennen VALUES ('21/22', 'Winter Wonderland Competition'); INSERT INTO hunderennen VALUES ('22/23', 'Blizzard Snow Race'); INSERT INTO rennerergebnis VALUES ('20/21', 1, '00:05:30'); INSERT INTO rennerergebnis VALUES ('20/21', 2, '00:04:25'); INSERT INTO rennerergebnis VALUES ('20/21', 3, '00:03:55'); INSERT INTO rennerergebnis VALUES ('21/22', 1, '00:07:01'); INSERT INTO rennerergebnis VALUES ('21/22', 2, '00:06:40'); INSERT INTO rennerergebnis VALUES ('21/22', 3, '00:08:11'); INSERT INTO rennerergebnis VALUES ('22/23', 1, '00:08:09'); INSERT INTO rennerergebnis VALUES ('22/23', 2, '00:08:50'); INSERT INTO rennerergebnis VALUES ('22/23', 3, '00:09:06'); SELECT * FROM besitzer; SELECT * FROM hunde; SELECT * FROM trainer; SELECT * FROM zertifikat; SELECT * FROM kurs; SELECT * FROM termin; SELECT * FROM hunde_zertifikat; SELECT * FROM rudel; SELECT * FROM rudel_mitglied; SELECT * FROM hunderennen; SELECT * FROM rennerergebnis; /* 1. Zu welchem Kurs sind durchschnittlich die meisten Doggen angemeldet? */ SELECT k.kurs_nr, k.kursname, COUNT(*) AS anz_teilnehmer FROM kurs k INNER JOIN termin t ON t.kurs_nr = k.kurs_nr WHERE k.kurs_nr IN ( SELECT t.kurs_nr FROM termin WHERE t.hunde_id IN ( SELECT h.hunde_id FROM hunde h WHERE h.rasse = 'Dogge' ) GROUP BY t.kurs_nr ) GROUP BY k.kurs_nr, k.kursname ORDER BY COUNT(*) DESC LIMIT 1; /* 2. Welcher Hund hat die meisten Zertifikate gesammelt? (Geordnet von den meisten bis zu den wenigsten Zertifikatsinhabern) */ SELECT hz.hunde_id, h.hunde_name, COUNT(*) anz_zertifikat FROM hunde_zertifikat hz INNER JOIN hunde h USING (hunde_id) GROUP BY hz.hunde_id, h.hunde_name ORDER BY COUNT(*) DESC; /* 3. Wer ist der Hundebesitzer mit den meisten Rassen? */ SELECT b.besitzer_id, b.name, b.vorname, COUNT(DISTINCT h.rasse) anz_rasse FROM besitzer b INNER JOIN hunde h USING (besitzer_id) GROUP BY b.besitzer_id, b.name, b.vorname ORDER BY COUNT(*) DESC; /* 4. Welches Rudel hat die Bestzeit im letzten Schlittenhunderennen erreicht und wie viele Shiba Inu sind in diesem Team? */ SELECT r.rudel_nr, r.rudelname, re.endzeit AS bestzeit, COUNT(CASE WHEN h.rasse = 'Shiba Inu' THEN h.rasse ELSE NULL END) AS anz_shibainu FROM rennerergebnis re INNER JOIN rudel r USING (rudel_nr) INNER JOIN rudel_mitglied rm USING (rudel_nr) INNER JOIN hunde h ON h.hunde_id = rm.mitglied_id WHERE re.zeitraum = '22/23' GROUP BY r.rudel_nr, r.rudelname, re.endzeit ORDER BY bestzeit ASC LIMIT 1; /* 5. Welcher Trainer bildet mehr als 1 Kurs aus? */ SELECT tr.trainer_id, tr.name FROM trainer tr INNER JOIN kurs k USING (trainer_id) GROUP BY tr.trainer_id, tr.name HAVING COUNT(*) > 1 ORDER BY tr.trainer_id ASC; /* 6. Zeigen Sie eine Liste der Durchschnittsnoten aller Hündinnen, die Zertifikate erhalten haben, von der höchsten bis zur niedrigsten. */ SELECT hz.hunde_id, CAST(AVG(hz.note) AS numeric(8,1)) AS durchschnittsnote FROM hunde_zertifikat hz INNER JOIN hunde h USING (hunde_id) WHERE h.geschlecht = 'w' GROUP BY hz.hunde_id; /* 7. Liste aller Hunde, die zu keinem Kurstermin angemeldet sind, nach Namen aufsteigend sortiert. */ SELECT h.hunde_name FROM hunde h WHERE h.hunde_id not in (SELECT t.hunde_id FROM termin t) ORDER BY h.hunde_name ASC; /* 8. Welcher Hund hat das "Anti-Giftkoeder-Training" absolviert? */ SELECT hz.hunde_id, h.hunde_name FROM hunde_zertifikat hz INNER JOIN hunde h ON h.hunde_id = hz.hunde_id INNER JOIN kurs k ON k.zertifikat_id = hz.zertifikat_id WHERE kursname = 'Anti-Giftkoeder-Training' GROUP BY hz.hunde_id, h.hunde_name; /* Trigger - create a trigger that checks if a specific dog has Bachelor certificate before registering Master course */ CREATE OR REPLACE FUNCTION check_zertifikat() RETURNS trigger AS $$ DECLARE kursnummer integer; BEGIN SELECT t.kurs_nr INTO kursnummer FROM termin t; IF kursnummer = '3' OR kursnummer = '4' THEN RAISE EXCEPTION 'Erforderliches Zertifikat fehlt --> 1, 2 oder 5' USING HINT = 'Bitte überprüfen Sie das Zertifikat Ihres Hundes'; END IF; RETURN NULL; END; $$ LANGUAGE PLPGSQL; CREATE OR REPLACE TRIGGER tg_zertifikat AFTER INSERT OR UPDATE ON termin FOR EACH ROW EXECUTE FUNCTION check_zertifikat(); /* Zum Testen */ UPDATE termin SET kurs_nr = '3' WHERE termin_nr = '3'; SELECT * FROM termin;
SQL
Server:
MariaDB 11.4
MariaDB 11.5
MariaDB 10
MariaDB 10 Sakila (ReadOnly)
MySQL 5.7
MySQL 5.7 Sakila (ReadOnly)
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear