Strukturierte Abfragesprache ist das primäre Instrument, das bei der Arbeit mit relationalen Datenbanken verwendet wird, daher sollte es jeder kennen, der mit Datenbanken zu tun hat. Egal, ob Sie SQL-Neuling sind oder einfach nur Ihre Kenntnisse aufpolieren möchten, dieser Artikel führt Sie durch 50 speziell entwickelte SQL-Abfrage-Interviewfragen vom Einstiegs- bis zum Fortgeschrittenenniveau.
Beispieltabellendaten
Um das besser zu verstehen und auszuführen SQL-Abfragenbeginnen wir mit der Untersuchung der in diesem Artikel verwendeten Beispieldaten. Die folgenden Tabellen dienen als Grundlage für alle Abfragen und Beispiele.
Mitarbeitertisch
Mitarbeiter-ID | Vorname | Nachname | Abteilungs-ID | Gehalt | Einstellungsdatum | ManagerID |
---|---|---|---|---|---|---|
1 | Alice | Johnson | 101 | 60000 | 15.01.2018 | 3 |
2 | Bob | Schmied | 102 | 75000 | 20.05.2017 | 3 |
3 | Charlie | Braun | 101 | 90000 | 30.09.2015 | NULL |
4 | David | Williams | 103 | 55000 | 11.07.2019 | 3 |
5 | Eva | Davis | 102 | 65000 | 25.03.2020 | 2 |
Bestelltabelle
Bestell-ID | Mitarbeiter-ID | Produkt-ID | Menge | Bestelldatum |
---|---|---|---|---|
1001 | 1 | 201 | 10 | 15.01.2022 |
1002 | 2 | 202 | 5 | 16.01.2022 |
1003 | 3 | 203 | 20 | 17.01.2022 |
1004 | 4 | 202 | 15 | 18.01.2022 |
1005 | 5 | 204 | 25 | 19.01.2022 |
Produkttabelle
Produkt-ID | Produktname | Preis | Kategorie |
---|---|---|---|
201 | Laptop computer | 1200 | Elektronik |
202 | Smartphone | 800 | Elektronik |
203 | Bürostuhl | 150 | Möbel |
204 | Schreibtisch | 300 | Möbel |
205 | Monitor | 200 | Elektronik |
Anfängerniveau
In diesem Abschnitt möchten wir einen Leitfaden für grundlegende SQL-Abfragen bereitstellen, den Schüler, die mit SQL noch nicht vertraut sind, leicht verstehen können. Diese grundlegenden Abfragen können als Grundlage verwendet werden, um mit den wichtigsten Aspekten von SQL vertraut zu werden, einschließlich der Auswahl von Daten, Formen der Datenfilterung und rudimentären Berechnungen.
Q1. Schreiben Sie eine Abfrage, um alle Datensätze aus der Tabelle „Workers“ anzuzeigen.
Antwort:
SELECT * FROM Workers;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
1 | Alice | Johnson | 10 | 160000 | 2018-01-15 | 32
2 | Bob | Smith | 10 | 275000 | 2017-05-20 | 33
3 | Charlie | Brown | 10 | 190000 | 2015-09-30 | NULL
4 | David | Williams | 10 | 355000 | 2019-07-11 | 35
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
Q2. Rufen Sie nur den Vornamen und Nachnamen der Mitarbeiter ab.
Antwort:
SELECT FirstName, LastName FROM Workers;
FirstName | LastName
--------------------
Alice | Johnson
Bob | Smith
Charlie | Brown
David | Williams
Eva | Davis
Q3. Rufen Sie die eindeutigen Abteilungs-IDs aus der Tabelle „Mitarbeiter“ ab.
Antwort:
SELECT DISTINCT DepartmentID FROM Workers;
DepartmentID
-------------
10
This fall. Holen Sie sich Mitarbeiter mit einem Gehalt von mehr als 60.000.
Antwort:
SELECT * FROM Workers WHERE Wage > 60000;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
1 | Alice | Johnson | 10 | 160000 | 2018-01-15 | 32
2 | Bob | Smith | 10 | 275000 | 2017-05-20 | 33
3 | Charlie | Brown | 10 | 190000 | 2015-09-30 | NULL
4 | David | Williams | 10 | 355000 | 2019-07-11 | 35
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
F5. Schreiben Sie eine Abfrage, um alle Bestellungen anzuzeigen, die am oder nach dem 17. Januar 2022 aufgegeben wurden.
Antwort:
SELECT * FROM Orders WHERE OrderDate >= '2022-01-17';
OrderID | EmployeeID | ProductID | Amount | OrderDate
----------------------------------------------------------
1022 | 2 | 1 | 2 | 2022-01-16
1023 | 3 | 3 | 3 | 2022-01-17
1024 | 4 | 2 | 5 | 2022-01-18
1025 | 5 | 4 | 5 | 2022-01-19
F6. Rufen Sie alle Produkte ab, deren Preis unter 300 liegt.
Antwort:
SELECT * FROM Merchandise WHERE Value < 300;
ProductID | ProductName | Value | Class
--------------------------------------------
203 | Workplace Chair | 150 | Furnishings
204 | Desk | 300 | Furnishings
205 | Monitor | 200 | Electronics
F7. Finden Sie die Gesamtzahl der Bestellungen in der Tabelle „Bestellungen“.
Antwort:
SELECT COUNT(*) AS TotalOrders FROM Orders;
TotalOrders
------------
5
F8. Rufen Sie die Particulars des Produkts mit dem Namen „Laptop computer“ ab.
Antwort:
SELECT * FROM Merchandise WHERE ProductName="Laptop computer";
ProductID | ProductName | Value | Class
--------------------------------------------
201 | Laptop computer | 1200 | Electronics
F9. Schreiben Sie eine Abfrage, um Mitarbeiter nach ihrem Einstellungsdatum in aufsteigender Reihenfolge zu sortieren.
Antwort:
SELECT * FROM Workers ORDER BY HireDate ASC;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
3 | Charlie | Brown | 10 | 190000 | 2015-09-30 | NULL
2 | Bob | Smith | 10 | 275000 | 2017-05-20 | 33
1 | Alice | Johnson | 10 | 160000 | 2018-01-15 | 32
4 | David | Williams | 10 | 355000 | 2019-07-11 | 35
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
F10. Rufen Sie den Höchstpreis der Produkte in der Kategorie „Elektronik“ ab.
Antwort:
SELECT MAX(Value) AS MaxPrice FROM Merchandise WHERE Class = 'Electronics';
MaxPrice
--------
1200
Der folgende Abschnitt des Artikels befasst sich mit der mittleren Stufe des Erlernens von SQL, indem umfassendere Abfragen vorgestellt werden. Sie werden mit dem Verknüpfen von Tabellen fortfahren und lernen, wie Sie Funktionen zum Filtern von Daten sowie komplexe Operationen verwenden, um reale Operationen besser zu lösen.
F11. Schreiben Sie eine Abfrage, um die Tabellen „Mitarbeiter“ und „Bestellungen“ zu verknüpfen, um Mitarbeiternamen zusammen mit ihren Bestellungen abzurufen.
Antwort:
SELECT e.FirstName, e.LastName, o.OrderID, o.OrderDate
FROM Workers e
JOIN Orders o ON e.EmployeeID = o.EmployeeID;
FirstName | LastName | OrderID | OrderDate
-------------------------------------------
Alice | Johnson | 1022 | 2022-01-16
Bob | Smith | 1023 | 2022-01-17
Charlie | Brown | 1024 | 2022-01-18
David | Williams | 1025 | 2022-01-19
F12. Berechnen Sie das Gesamtgehalt professional Abteilung.
Antwort:
SELECT DepartmentID, SUM(Wage) AS TotalSalary
FROM Workers
GROUP BY DepartmentID;
DepartmentID | TotalSalary
-------------------------
10 | 1355000
F13. Finden Sie die Mitarbeiter, die keinen Supervisor haben.
Antwort:
SELECT * FROM Workers WHERE ManagerID IS NULL;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
3 | Charlie | Brown | 10 | 190000 | 2015-09-30 | NULL
F14. Schreiben Sie eine Abfrage, um den durchschnittlichen Produktpreis für jede Kategorie anzuzeigen.
Antwort:
SELECT Class, AVG(Value) AS AvgPrice
FROM Merchandise
GROUP BY Class;
Class | AvgPrice
-----------------------
Electronics | 800
Furnishings | 216.67
F15. Rufen Sie die Daten der drei bestbezahlten Mitarbeiter ab.
Antwort:
SELECT * FROM Workers
ORDER BY Wage DESC
LIMIT 3;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
4 | David | Williams | 10 | 355000 | 2019-07-11 | 35
2 | Bob | Smith | 10 | 275000 | 2017-05-20 | 33
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
F16. Rufen Sie die Bestelldetails zusammen mit dem Produktnamen ab.
Antwort:
SELECT o.OrderID, o.Amount, p.ProductName, p.Value
FROM Orders o
JOIN Merchandise p ON o.ProductID = p.ProductID;
OrderID | Amount | ProductName | Value
-------------------------------------------
1022 | 2 | Laptop computer | 1200
1023 | 3 | Workplace Chair | 150
1024 | 5 | Smartphone | 800
1025 | 5 | Desk | 300
F17. Finden Sie die Gesamtmenge der bestellten Produkte für jedes Produkt.
Antwort:
SELECT ProductID, SUM(Amount) AS TotalQuantity
FROM Orders
GROUP BY ProductID;
ProductID | TotalQuantity
--------------------------
1 | 2
2 | 8
3 | 3
4 | 5
F18. Schreiben Sie eine Anfrage, um den Preis aller Produkte der Kategorie „Möbel“ um 10 % zu aktualisieren.
Antwort:
UPDATE Merchandise
SET Value = Value * 1.10
WHERE Class = 'Furnishings';
Q19. Löschen Sie alle Bestellungen, die vor dem 17. Januar 2022 aufgegeben wurden.
Antwort:
DELETE FROM Orders WHERE OrderDate < '2022-01-17';
Q20. Rufen Sie Mitarbeiter ab, deren Vorname mit „A“ beginnt.
Antwort:
SELECT * FROM Workers WHERE FirstName LIKE 'A%';
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
1 | Alice | Johnson | 10 | 160000 | 2018-01-15 | 32
F21. Rufen Sie die Anzahl der jedes Jahr eingestellten Mitarbeiter ab.
Antwort:
SELECT YEAR(HireDate) AS HireYear, COUNT(*) AS EmployeesHired
FROM Workers
GROUP BY YEAR(HireDate);
HireYear | EmployeesHired
-------------------------
2015 | 1
2017 | 1
2018 | 1
2019 | 1
2020 | 1
F22. Schreiben Sie eine Abfrage, um Mitarbeiter zu finden, die mehr als das Durchschnittsgehalt verdienen.
Antwort:
SELECT * FROM Workers
WHERE Wage > (SELECT AVG(Wage) FROM Workers);
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
2 | Bob | Smith | 10 | 275000 | 2017-05-20 | 33
4 | David | Williams | 10 | 355000 | 2019-07-11 | 35
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
F23. Zeigen Sie die High-3-Produkte mit der höchsten Gesamtverkaufsmenge an.
Antwort:
SELECT p.ProductName, SUM(o.Amount) AS TotalQuantity
FROM Orders o
JOIN Merchandise p ON o.ProductID = p.ProductID
GROUP BY p.ProductName
ORDER BY TotalQuantity DESC
LIMIT 3;
ProductName | TotalQuantity
----------------------------
Smartphone | 8
Desk | 5
Workplace Chair| 3
F24. Rufen Sie die Mitarbeiter ab, die keine Bestellungen aufgegeben haben.
Antwort:
SELECT * FROM Workers
WHERE EmployeeID NOT IN (SELECT DISTINCT EmployeeID FROM Orders);
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
3 | Charlie | Brown | 10 | 190000 | 2015-09-30 | NULL
F25. Schreiben Sie eine Abfrage, um den zuletzt eingestellten Mitarbeiter abzurufen.
Antwort:
SELECT * FROM Workers
ORDER BY HireDate DESC
LIMIT 1;
EmployeeID | FirstName | LastName | DepartmentID | Wage | HireDate | ManagerID
----------------------------------------------------------------------------
5 | Eva | Davis | 10 | 265000 | 2020-03-25 | 32
F26. Zeigen Sie alle Mitarbeiter zusammen mit der Gesamtzahl der von ihnen bearbeiteten Aufträge an.
Antwort:
SELECT e.EmployeeID, e.FirstName, COUNT(o.OrderID) AS TotalOrders
FROM Workers e
LEFT JOIN Orders o ON e.EmployeeID = o.EmployeeID
GROUP BY e.EmployeeID, e.FirstName;
Mitarbeiter-ID | Vorname | Gesamtbestellungen |
---|---|---|
1 | Alice | 2 |
2 | Bob | 2 |
3 | Charlie | 1 |
4 | David | 1 |
5 | Eva | 0 |
F27. Rufen Sie Produktdetails ab, deren Gesamtumsatz 10.000 US-Greenback übersteigt.
Antwort:
SELECT p.ProductName, SUM(o.Amount * p.Value) AS TotalSales
FROM Orders o
JOIN Merchandise p ON o.ProductID = p.ProductID
GROUP BY p.ProductName
HAVING TotalSales > 10000;
Produktname | Gesamtumsatz |
---|---|
Laptop computer | 24000 |
F28. Finden Sie Mitarbeiter, die im selben Jahr wie ihr Vorgesetzter in das Unternehmen eingetreten sind.
Antwort:
SELECT e.FirstName AS EmployeeName, m.FirstName AS ManagerName
FROM Workers e
JOIN Workers m ON e.ManagerID = m.EmployeeID
WHERE YEAR(e.HireDate) = YEAR(m.HireDate);
Mitarbeitername | Managername |
---|---|
Alice | Bob |
F29. Rufen Sie die Namen der Mitarbeiter mit dem höchsten Gehalt in jeder Abteilung ab.
Antwort:
SELECT DepartmentID, FirstName, LastName, Wage
FROM Workers
WHERE (DepartmentID, Wage) IN (
SELECT DepartmentID, MAX(Wage)
FROM Workers
GROUP BY DepartmentID
);
Abteilungs-ID | Vorname | Nachname | Gehalt |
---|---|---|---|
1 | Alice | Johnson | 160000 |
2 | Bob | Schmied | 75000 |
3 | David | Williams | 55000 |
Q30. Schreiben Sie eine Abfrage, um den von jedem Mitarbeiter generierten Gesamtumsatz abzurufen.
Antwort:
SELECT e.FirstName, e.LastName, SUM(o.Amount * p.Value) AS TotalRevenue
FROM Workers e
JOIN Orders o ON e.EmployeeID = o.EmployeeID
JOIN Merchandise p ON o.ProductID = p.ProductID
GROUP BY e.EmployeeID, e.FirstName, e.LastName;
Vorname | Nachname | Gesamtumsatz |
---|---|---|
Alice | Johnson | 32000 |
Bob | Schmied | 63000 |
Charlie | Braun | 45000 |
David | Williams | 30000 |
Eva | Davis | 0 |
Fortgeschrittenes Niveau
Im fortgeschrittenen Degree befassen wir uns mit der komplexen Synthese von SQL-Abfrageanweisungen. Dieser Abschnitt widmet sich der Beschreibung komplexerer Operationen wie Rating, Fensterfunktionen, grundlegende Unterabfragen und Optimierungsmethoden, um Ihnen die Bewältigung komplizierter Aufgaben bei der Datenanalyse zu ermöglichen.
F31. Schreiben Sie eine Abfrage, um Mitarbeiter abzurufen, die mehr verdienen als ihr Vorgesetzter.
Antwort:
SELECT e.FirstName AS EmployeeName, m.FirstName AS ManagerName
FROM Workers e
JOIN Workers m ON e.ManagerID = m.EmployeeID
WHERE e.Wage > m.Wage;
Mitarbeitername | Managername |
---|---|
Alice | Bob |
F32. Rufen Sie das zweithöchste Gehalt aus der Tabelle „Mitarbeiter“ ab.
Antwort:
SELECT MAX(Wage) AS SecondHighestSalary
FROM Workers
WHERE Wage < (SELECT MAX(Wage) FROM Workers);
SecondHighestSalary
75000
F33. Pay attention Sie die Abteilungen auf, denen keine Mitarbeiter zugeordnet sind.
Antwort:
SELECT * FROM Departments
WHERE DepartmentID NOT IN (SELECT DISTINCT DepartmentID FROM Workers);
Abteilungs-ID | Abteilungsname |
---|---|
4 | Advertising and marketing |
F34. Schreiben Sie eine Abfrage, um eine Ansicht zu erstellen, die die Namen der Mitarbeiter und deren Abteilungsnamen anzeigt.
Antwort:
CREATE VIEW EmployeeDepartmentView AS
SELECT e.FirstName, e.LastName, d.DepartmentName
FROM Workers e
JOIN Departments d ON e.DepartmentID = d.DepartmentID;
Vorname | Nachname | Abteilungsname |
---|---|---|
Alice | Johnson | ES |
Bob | Schmied | Verkäufe |
Charlie | Braun | ES |
David | Williams | Personalwesen |
Eva | Davis | Verkäufe |
F35. Rufen Sie die Namen der Mitarbeiter ab, die mehr als 10 Bestellungen aufgegeben haben.
Antwort:
SELECT e.FirstName, e.LastName
FROM Workers e
JOIN Orders o ON e.EmployeeID = o.EmployeeID
GROUP BY e.EmployeeID, e.FirstName, e.LastName
HAVING COUNT(o.OrderID) > 10;
Vorname | Nachname |
---|---|
Alice | Johnson |
Bob | Schmied |
F36. Schreiben Sie eine Abfrage, um Mitarbeiter anhand ihres Gehalts in jeder Abteilung einzustufen.
Antwort:
SELECT EmployeeID, FirstName, DepartmentID, Wage,
RANK() OVER (PARTITION BY DepartmentID ORDER BY Wage DESC) AS Rank
FROM Workers;
Mitarbeiter-ID | Vorname | Abteilungs-ID | Gehalt | Rang |
---|---|---|---|---|
1 | Alice | 1 | 160000 | 1 |
3 | Charlie | 1 | 190000 | 2 |
2 | Bob | 2 | 75000 | 1 |
4 | David | 3 | 55000 | 1 |
5 | Eva | 2 | 65000 | 2 |
F37. Rufen Sie die kumulierten Verkäufe für jedes Produkt ab.
Antwort:
SELECT ProductID, ProductName,
SUM(SUM(Amount * Value)) OVER (ORDER BY ProductID) AS CumulativeSales
FROM Merchandise p
JOIN Orders o ON p.ProductID = o.ProductID
GROUP BY ProductID, ProductName;
Produkt-ID | Produktname | Kumulierte Verkäufe |
---|---|---|
201 | Laptop computer | 24000 |
202 | Smartphone | 32000 |
203 | Bürostuhl | 1500 |
204 | Schreibtisch | 3000 |
205 | Monitor | 1500 |
F38. Identifizieren Sie die Abteilung mit den höchsten Gesamtgehaltsausgaben.
Antwort:
SELECT DepartmentID, SUM(Wage) AS TotalExpenditure
FROM Workers
GROUP BY DepartmentID
ORDER BY TotalExpenditure DESC
LIMIT 1;
Abteilungs-ID | Gesamtausgaben |
---|---|
1 | 450000 |
F39. Schreiben Sie eine Abfrage, um den prozentualen Beitrag jedes Produkts zum Gesamtumsatz zu ermitteln.
Antwort:
SELECT p.ProductName,
(SUM(o.Amount * p.Value) * 100.0 /
(SELECT SUM(Amount * Value) FROM Orders o JOIN Merchandise p ON o.ProductID = p.ProductID)) AS ContributionPercentage
FROM Orders o
JOIN Merchandise p ON o.ProductID = p.ProductID
GROUP BY p.ProductName;
Produktname | Beitragsprozentsatz |
---|---|
Laptop computer | 48.00 |
Smartphone | 32.00 |
Bürostuhl | 4.00 |
Schreibtisch | 8.00 |
Monitor | 8.00 |
F40. Finden Sie Mitarbeiter mit demselben Vorgesetzten und verdienen Sie mehr als 70.000 US-Greenback.
Antwort:
SELECT *
FROM Workers e1
WHERE ManagerID IS NOT NULL
AND Wage > 70000
AND ManagerID IN (
SELECT ManagerID FROM Workers e2 WHERE e1.ManagerID = e2.ManagerID
);
Mitarbeiter-ID | Vorname | Nachname | Gehalt | ManagerID |
---|---|---|---|---|
1 | Alice | Johnson | 160000 | 32 |
2 | Bob | Schmied | 75000 | 32 |
F41. Schreiben Sie eine Abfrage, um doppelte Zeilen in der Tabelle „Bestellungen“ zu erkennen.
Antwort:
SELECT EmployeeID, ProductID, OrderDate, COUNT(*) AS DuplicateCount
FROM Orders
GROUP BY EmployeeID, ProductID, OrderDate
HAVING COUNT(*) > 1;
Mitarbeiter-ID | Produkt-ID | Bestelldatum | DuplicateCount |
---|---|---|---|
1 | 201 | 15.01.2022 | 2 |
F42. Rufen Sie die Particulars von Bestellungen ab, die am selben Tag von mehreren Mitarbeitern aufgegeben wurden.
Antwort:
SELECT OrderDate, COUNT(DISTINCT EmployeeID) AS EmployeeCount
FROM Orders
GROUP BY OrderDate
HAVING EmployeeCount > 1;
Bestelldatum | EmployeeCount |
---|---|
15.01.2022 | 2 |
16.01.2022 | 2 |
17.01.2022 | 1 |
F43. Erstellen Sie eine gespeicherte Prozedur, um Produktpreise basierend auf der Kategorie zu aktualisieren.
Antwort:
DELIMITER $$
CREATE PROCEDURE UpdatePriceByCategory(IN category_name VARCHAR(50), IN price_factor DECIMAL(5, 2))
BEGIN
UPDATE Merchandise
SET Value = Value * price_factor
WHERE Class = category_name;
END$$
DELIMITER ;
F44. Schreiben Sie eine Abfrage, um die Vor- und Nachlaufdaten für jeden Mitarbeiter zu berechnen.
Antwort:
SELECT EmployeeID, OrderID, OrderDate,
LAG(OrderDate) OVER (PARTITION BY EmployeeID ORDER BY OrderDate) AS PreviousOrderDate,
LEAD(OrderDate) OVER (PARTITION BY EmployeeID ORDER BY OrderDate) AS NextOrderDate
FROM Orders;
Mitarbeiter-ID | Bestell-ID | Bestelldatum | VorherigesBestelldatum | Nächstes Bestelldatum |
---|---|---|---|---|
1 | 1 | 15.01.2022 | NULL | 16.01.2022 |
2 | 2 | 16.01.2022 | 15.01.2022 | 17.01.2022 |
3 | 3 | 17.01.2022 | NULL | NULL |
F45. Identifizieren Sie die Produkte, die nicht bestellt wurden.
Antwort:
SELECT * FROM Merchandise
WHERE ProductID NOT IN (SELECT DISTINCT ProductID FROM Orders);
Produkt-ID | Produktname |
---|---|
204 | Schreibtisch |
205 | Monitor |
F46. Schreiben Sie eine Abfrage, um Mitarbeiter abzurufen, deren Gesamtbestellmenge zwischen 50 und 100 liegt.
Antwort:
SELECT e.FirstName, e.LastName, SUM(o.Amount) AS TotalQuantity
FROM Workers e
JOIN Orders o ON e.EmployeeID = o.EmployeeID
GROUP BY e.EmployeeID, e.FirstName, e.LastName
HAVING TotalQuantity BETWEEN 50 AND 100;
Vorname | Nachname | Gesamtmenge |
---|---|---|
Bob | Schmied | 60 |
F47. Holen Sie sich für jedes Produkt die zweithöchste bestellte Menge.
Antwort:
SELECT ProductID, MAX(Amount) AS SecondHighestQuantity
FROM Orders
WHERE Amount < (SELECT MAX(Amount) FROM Orders WHERE Orders.ProductID = ProductID)
GROUP BY ProductID;
Produkt-ID | Zweithöchste Menge |
---|---|
201 | 20 |
202 | 30 |
203 | 10 |
F48. Finden Sie die Mindest- und Höchstbestellmengen für jeden Mitarbeiter.
Antwort:
SELECT EmployeeID, MIN(Amount) AS MinQuantity, MAX(Amount) AS MaxQuantity
FROM Orders
GROUP BY EmployeeID;
Mitarbeiter-ID | Mindestmenge | Maximale Menge |
---|---|---|
1 | 10 | 20 |
2 | 20 | 40 |
3 | 10 | 10 |
F49. Schreiben Sie eine Abfrage, um die Gehälter der Mitarbeiter in Quartile aufzuteilen.
Antwort:
SELECT EmployeeID, FirstName, Wage,
NTILE(4) OVER (ORDER BY Wage) AS SalaryQuartile
FROM Workers;
Mitarbeiter-ID | Vorname | Gehalt | GehaltQuartil |
---|---|---|---|
1 | Alice | 160000 | 4 |
2 | Bob | 75000 | 3 |
3 | Charlie | 190000 | 4 |
4 | David | 55000 | 2 |
5 | Eva | 65000 | 2 |
F50. Erstellen Sie eine temporäre Tabelle für Bestellungen mit hohem Umsatz (mehr als 5.000 $).
Antwort:
CREATE TEMPORARY TABLE HighRevenueOrders AS
SELECT o.OrderID, o.Amount, p.Value, (o.Amount * p.Value) AS Income
FROM Orders o
JOIN Merchandise p ON o.ProductID = p.ProductID
WHERE (o.Amount * p.Value) > 5000;
Bestell-ID | Menge | Preis | Einnahmen |
---|---|---|---|
1 | 10 | 1200 | 12000 |
2 | 25 | 800 | 20000 |
Abschluss
Das Beherrschen von Interviewfragen zu SQL-Abfragen bietet eine solide Grundlage für eine effiziente Datenverwaltung und -analyse. Durch das Üben dieser Interviewfragen zu SQL-Abfragen verbessern Sie Ihre Fähigkeit, mit realen Datenbanken zu arbeiten, und erleichtern so das effektive Abrufen, Bearbeiten und Interpretieren von Daten. Unabhängig davon, ob Sie gerade erst anfangen oder Ihre Fähigkeiten verfeinern, bleibt SQL ein unverzichtbares Werkzeug für jeden Datenprofi, und das Verständnis seiner vielfältigen Fähigkeiten eröffnet unzählige Möglichkeiten zur Problemlösung und Gewinnung von Erkenntnissen.