Hallo vrienden! in deze post, zullen we een aantal van de meest voorkomende SQL query’s gevraagd in interviews te zien. Deze SQL query interview vragen en antwoorden zijn ontworpen voor zowel eerstejaars als ervaren.
In feite zijn de meeste van deze vragen aan mij gesteld tijdens interviews in de verschillende fasen van mijn carrière.
Als je de basisvragen wilt overslaan en wilt beginnen met een aantal lastige SQL-query’s, dan kun je direct naar onze SQL-query’s interviewvragen voor de ervaren sectie gaan.
Bedenk de onderstaande twee tabellen als referentie terwijl u query’s probeert te maken voor de vragen die hier worden gesteld.
Tabel – EmployeeDetails
EmpId | FullName | ManagerId | DatumvanAanmelding | Stad |
---|---|---|---|---|
121 | John Snow | 321 | 01/31/2014 | Toronto |
321 | Walter White | 986 | 01/30/2015 | Californië |
421 | Kuldeep Rana | 876 | 27/11/2016 | New Delhi |
Tabel – WerknemersSalaris
EmpId | Project | Salaris | Variabele |
---|---|---|---|
121 | P1 | 8000 | 500 |
321 | P2 | 10000 | 1000 |
421 | P1 | 12000 | 0 |
Met het oog op uw gemak, heb ik de top 10 vragen voor u samengesteld. U kunt proberen het oplossen van deze vragen en klik op de links om naar hun respectieve antwoorden.
- QL Query om records die aanwezig zijn in een tabel, maar niet in een andere tabel.
- QL query om alle medewerkers die niet werken aan een project.
- QL query om alle medewerkers te halen uit EmployeeDetails die in het jaar 2020 bij het bedrijf.
- Alle werknemers ophalen uit EmployeeDetails die een salaris hebben in EmployeeSalary.
- Schrijf een SQL query om het aantal werknemers per project op te halen.
- Namen van werknemers en salaris ophalen, zelfs als de salariswaarde niet aanwezig is voor de werknemer.
- Schrijf een SQL query om alle werknemers op te halen die ook manager zijn.
- Schrijf een SQL-query om dubbele records op te halen uit EmployeeDetails.
- Schrijf een SQL-query om alleen oneven rijen op te halen uit de tabel.
- Schrijf een query om het op twee na hoogste salaris te vinden uit een tabel zonder top of limit keyword.
Of, je kunt ook naar onze twee onderstaande secties gaan over interviewvragen voor freshers en ervaren professionals.
Inhoud
SQL Query Interview Vragen voor Freshers
Hier vindt u een lijst met top SQL query interviewvragen en antwoorden voor beginnende kandidaten die hen zullen helpen bij hun interviews. In deze query’s zullen we ons alleen richten op de basis SQL-opdrachten.
Vragen.1. Schrijf een SQL query om de EmpId en FullName op te halen van alle werknemers die onder Manager werken met id – ‘986’.
Ans. We kunnen de tabel EmployeeDetails gebruiken om de werknemersdetails op te halen met een where-clausule voor de manager-
SELECT EmpId, FullNameFROM EmployeeDetailsWHERE ManagerId = 986;
Ques.2Schrijf een SQL query om de verschillende projecten uit de tabel EmployeeSalary op te halen.
Als we naar de tabel EmployeeSalary kijken, kunnen we zien dat deze tabel projectwaarden bevat die overeenkomen met elke werknemer, of we kunnen zeggen dat we dubbele projectwaarden zullen krijgen als we Projectwaarden uit deze tabel selecteren.
Dus gebruiken we de distinct-clausule om de unieke waarden van het Project te krijgen.
SELECT DISTINCT(Project)FROM EmployeeSalary;
Ques.3. Schrijf een SQL-query om het aantal werknemers op te halen dat in project ‘P1’ werkt.
Ans. Hier gebruiken we de aggregatiefunctie count() met de SQL where-clausule-
SELECT COUNT(*) FROM EmployeeSalary WHERE Project = 'P1';
Ques.4Schrijf een SQL-query om het maximum-, minimum- en gemiddelde salaris van de werknemers te vinden. We kunnen de SQL-aggregatiefunctie gebruiken om de max-, min- en gemiddelde waarden op te halen-
SELECT Max(Salary), Min(Salary), AVG(Salary) FROM EmployeeSalary;
Ques.5Schrijf een SQL-query om de werknemers-id te vinden waarvan het salaris tussen 9000 en 15000 ligt.
Ans. Hier kunnen we de operator ‘Between’ gebruiken met een where-clausule.
SELECT EmpId, SalaryFROM EmployeeSalaryWHERE Salary BETWEEN 9000 AND 15000;
Ques.6. Schrijf een SQL-query om de werknemers te vinden die in Toronto wonen en werken onder een manager met ManagerId – 321.
Ans. Aangezien we aan beide voorwaarden moeten voldoen – werknemers die in ‘Toronto’ wonen en werken in Project ‘P2’. Daarom gebruiken we hier de operator AND-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='Toronto' AND ManagerId='321';
Vraag.7. Schrijf een SQL-query om alle werknemers op te halen die ofwel in Californië wonen ofwel werken onder een manager met ManagerId – 321.
Ans. Voor deze vraag moeten we aan een van de voorwaarden voldoen – werknemers die in ‘Californië’ wonen en werken onder Manager met ManagerId ‘321’. Dus gebruiken we hier de OR-operator-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='California' OR ManagerId='321';
Vragen.8Schrijf een SQL query om alle medewerkers te vinden die op een ander project werken dan P1.
Ans. Hier kunnen we de NOT operator gebruiken om de rijen te vinden die niet aan de gegeven voorwaarde voldoen.
SELECT EmpIdFROM EmployeeSalaryWHERE NOT Project='P1';
Of de operator niet gelijk aan gebruiken-
SELECT EmpIdFROM EmployeeSalaryWHERE Project <> 'P1';
Voor het verschil tussen de NOT- en <> SQL-operatoren, raadpleegt u deze link – Verschil tussen de NOT- en !=-operatoren.
Ques.9Schrijf een SQL-query om het totale salaris van elke werknemer weer te geven door het salaris op te tellen bij de variabele waarde.
Ans. Hier kunnen we gewoon de ‘+’-operator in SQL gebruiken.
SELECT EmpId,Salary+Variable as TotalSalary FROM EmployeeSalary;
Ques.10Schrijf een SQL-query voor het ophalen van werknemers wier naam begint met twee willekeurige tekens, gevolgd door de tekst “hn” en eindigt met een willekeurige reeks tekens.
Ans. Voor deze vraag kunnen we een SQL-query maken met behulp van de ‘like’-operator met ‘_’ en ‘%’-joker-kaarttekens, waarbij ‘_’ overeenkomt met één teken en ‘%’ overeenkomt met ‘0 of meer tekens’.
SELECT FullNameFROM EmployeeDetailsWHERE FullName LIKE '__hn%';
Ques.11Schrijf een SQL-query om alle werknemers-ID’s op te halen die aanwezig zijn in een van de tabellen – “EmployeeDetails” en “EmployeeSalary”.
Om unieke werknemers-ID’s uit beide tabellen te halen, kunnen we gebruik maken van de Union-clausule die de resultaten van de twee SQL-query’s kan combineren en unieke rijen kan opleveren.
SELECT EmpId FROM EmployeeDetailsUNION SELECT EmpId FROM EmployeeSalary;
Ques.12Schrijf een SQL query om gemeenschappelijke records tussen twee tabellen op te halen.
Ans. SQL Server – Met behulp van INTERSECT operator-
SELECT * FROM EmployeeSalaryINTERSECTSELECT * FROM ManagerSalary;
MySQL – Aangezien MySQL geen INTERSECT operator heeft, kunnen we de sub query gebruiken-
SELECT *FROM EmployeeSalaryWHERE EmpId IN (SELECT EmpId from ManagerSalary);
Ques.13Schrijf een SQL-query om records op te halen die in de ene tabel staan, maar niet in de andere.
Ans. SQL Server – MINUS-operator gebruiken-
SELECT * FROM EmployeeSalaryMINUSSELECT * FROM ManagerSalary;
MySQL – Aangezien MySQL geen MINUS-operator heeft, kunnen we gebruik maken van LEFT join-
SELECT EmployeeSalary.*FROM EmployeeSalaryLEFT JOINManagerSalary USING (EmpId)WHERE ManagerSalary.EmpId IS NULL;
Ques.14Schrijf een SQL query om de EmpIds op te halen die in beide tabellen aanwezig zijn – ‘EmployeeDetails’ en ‘EmployeeSalary.
Ans. Met behulp van sub query-
SELECT EmpId FROM EmployeeDetails where EmpId IN (SELECT EmpId FROM EmployeeSalary);
Ques.15. Schrijf een SQL query om de EmpIds op te halen die aanwezig zijn in EmployeeDetails maar niet in EmployeeSalary.
Ans. Met behulp van sub query-
SELECT EmpId FROM EmployeeDetails where EmpId Not IN (SELECT EmpId FROM EmployeeSalary);
Ques.16Schrijf een SQL-query voor het ophalen van de volledige namen van werknemers en vervang de spatie door ‘-‘.
Ans. Met behulp van de functie ‘Replace’-
SELECT REPLACE(FullName, ' ', '-') FROM EmployeeDetails;
Ques.17. Schrijf een SQL-query voor het ophalen van de positie van een bepaald teken in een veld.
Ans. Met behulp van de functie ‘Instr’-
SELECT INSTR(FullName, 'Snow')FROM EmployeeDetails;
Ques.18Schrijf een SQL-query om zowel EmpId als ManagerId weer te geven.
Ans. Hier kunnen we de opdracht CONCAT gebruiken.
SELECT CONCAT(EmpId, ManagerId) as NewIdFROM EmployeeDetails;
Ques.19. Schrijf een query om alleen de eerste naam (tekenreeks vóór spatie) uit de kolom FullName van de tabel EmployeeDetails te halen.
Ans. In deze vraag moeten we eerst de locatie van het spatieteken in het veld FullName ophalen en vervolgens de eerste naam uit het FullName-veld extraheren.
Voor het vinden van de locatie gebruiken we de LOCATE methode in MySQL en CHARINDEX in SQL SERVER en voor het ophalen van de string vóór de spatie gebruiken we de SUBSTRING OF MID methode.
MySQL – met MID
SELECT MID(FullName, 1, LOCATE(' ',FullName)) FROM EmployeeDetails;
SQL Server – met SUBSTRING
SELECT SUBSTRING(FullName, 1, CHARINDEX(' ',FullName)) FROM EmployeeDetails;
Vragen.20Schrijf een SQL query om de naam van de werknemer in hoofdletters te schrijven en de plaatswaarden in kleine letters.
Ans. We kunnen de SQL-functies Upper en Lower gebruiken om de beoogde resultaten te bereiken.
SELECT UPPER(FullName), LOWER(City) FROM EmployeeDetails;
Ques.21. Schrijf een SQL-query om het totale aantal keren dat een bepaald teken – ‘n’ – voorkomt in het veld FullName te vinden.
Ans. Hier kunnen we de functie ‘Length’ gebruiken. We kunnen de totale lengte van het veld FullName aftrekken van de lengte van de FullName na vervanging van het teken – ‘n’.
SELECT FullName, LENGTH(FullName) - LENGTH(REPLACE(FullName, 'n', ''))FROM EmployeeDetails;
Ques.22. Schrijf een SQL-query om de namen van de werknemers bij te werken door voorloop- en naloopspaties te verwijderen.
Ans. Gebruik ‘Update’-opdracht met ‘LTRIM’- en ‘RTRIM’-functie.
UPDATE EmployeeDetails SET FullName = LTRIM(RTRIM(FullName));
Ques.23. Zoek alle werknemers die niet aan een project werken.
Ans. Dit is een van de zeer elementaire interviewvragen waarin de interviewer wil zien of de persoon de veelgebruikte – Is NULL operator kent.
SELECT EmpId FROM EmployeeSalary WHERE Project IS NULL;
Ques.24Schrijf een SQL query voor het ophalen van namen van werknemers met een salaris van 5000 of meer en 10000 of minder.
Ans. Hier gebruiken we BETWEEN in de “where”-clausule om de EmpId terug te geven van de werknemers met een salaris dat aan de vereiste criteria voldoet, en vervolgens gebruiken we die als subquery om de volledige naam van de werknemer te vinden in de tabel EmployeeDetails.
SELECT FullName FROM EmployeeDetails WHERE EmpId IN (SELECT EmpId FROM EmployeeSalary WHERE Salary BETWEEN 5000 AND 10000);
Ques.25. Schrijf een SQL-query om de huidige datum te vinden.
Ans. MySQL-
SELECT NOW();
SQL Server-
SELECT getdate();
Oracle-
SELECT SYSDATE FROM DUAL;
Ques.26Schrijf een SQL query voor het ophalen van alle werknemersgegevens uit de tabel EmployeeDetails die in dienst zijn getreden in het jaar 2020.
Ans. Gebruik BETWEEN voor het datumbereik ’01-01-2020′ EN ’31-12-2020′-
SELECT * FROM EmployeeDetailsWHERE DateOfJoining BETWEEN '2020/01/01'AND '2020/12/31';
Ook kunnen we het jaargedeelte extraheren uit de toetredingsdatum (met behulp van YEAR in mySQL)-
SELECT * FROM EmployeeDetails WHERE YEAR(DateOfJoining) = '2020';
Ques.27Schrijf een SQL-query voor het ophalen van alle werknemersrecords uit de tabel EmployeeDetails die een salarisrecord hebben in de tabel EmployeeSalary.
Ans. Met behulp van ‘Exists’-
SELECT * FROM EmployeeDetails EWHERE EXISTS(SELECT * FROM EmployeeSalary S WHERE E.EmpId = S.EmpId);
Ques.28. Schrijf een SQL-query om het aantal werknemers per project op te halen, gesorteerd op projectaantal in aflopende volgorde.
Ans. De query heeft twee vereisten: eerst het aantal werknemers per project ophalen en vervolgens het resultaat op dat aantal sorteren.
Voor de telling per project gebruiken we de GROUP BY-clausule en voor het sorteren gebruiken we de ORDER BY-clausule op de alias van de projecttelling.
SELECT Project, count(EmpId) EmpProjectCountFROM EmployeeSalaryGROUP BY ProjectORDER BY EmpProjectCount DESC;
Ques.29. Schrijf een query om werknemersnamen en salarisgegevens op te halen. Geef de details van de werknemer weer, zelfs als het salarisrecord niet aanwezig is voor de werknemer.
Ans. Dit is weer een van de meest voorkomende interviewvragen waarbij de interviewer gewoon de basiskennis van SQL JOINS wil controleren.
Hier kunnen we left join gebruiken met de tabel EmployeeDetail aan de linkerkant van de tabel EmployeeSalary.
SELECT E.FullName, S.Salary FROM EmployeeDetails E LEFT JOIN EmployeeSalary SON E.EmpId = S.EmpId;
Vraag.30. Schrijf een SQL-query om 3 tabellen samen te voegen.
Ans. Als we uitgaan van 3 tabellen, TabelA, TabelB en TabelC, kunnen we 2 samenvoegingsclausules gebruiken zoals hieronder-
SELECT column1, column2FROM TableAJOIN TableB ON TableA.Column3 = TableB.Column3JOIN TableC ON TableA.Column4 = TableC.Column4;
Voor meer vragen over SQL-samenvoegingen, kunt u ook onze topvragen over SQL-samenvoegingen in het sollicitatiegesprek bekijken.
SQL Query Interview Vragen voor Ervaren
Hier vindt u een lijst met een aantal van de meest gestelde SQL query interview vragen voor ervaren professionals. Deze vragen hebben betrekking op SQL-query’s over geavanceerde SQL JOIN-concepten, het ophalen van dubbele rijen, oneven en even rijen, het n-de hoogste salaris, enz.
Vragen. 31. Schrijf een SQL query voor het ophalen van alle werknemers die ook managers zijn uit de EmployeeDetails tabel.
Ans. Hier moeten we Self-Join gebruiken omdat de eis is dat we de EmployeeDetails tabel als twee tabellen analyseren. We zullen verschillende aliassen ‘E’ en ‘M’ gebruiken voor dezelfde EmployeeDetails-tabel.
SELECT DISTINCT E.FullNameFROM EmployeeDetails EINNER JOIN EmployeeDetails MON E.EmpID = M.ManagerID;
Om meer te leren over Self Join, samen met enkele andere query’s, kunt u de onderstaande video bekijken die het self join-concept op een zeer eenvoudige manier uitlegt.
Ques.32. Schrijf een SQL-query om dubbele records op te halen uit EmployeeDetails (zonder rekening te houden met de primaire sleutel – EmpId).
Ans. Om dubbele records uit de tabel te vinden, kunnen we GROUP BY gebruiken op alle velden en dan de HAVING-clausule gebruiken om alleen die velden terug te geven waarvan het aantal groter is dan 1, d.w.z. de rijen met dubbele records.
SELECT FullName, ManagerId, DateOfJoining, City, COUNT(*)FROM EmployeeDetailsGROUP BY FullName, ManagerId, DateOfJoining, CityHAVING COUNT(*) > 1;
Ques.33. Schrijf een SQL query om duplicaten uit een tabel te verwijderen zonder een tijdelijke tabel te gebruiken.
Ans. Hier kunnen we delete met alias en inner join gebruiken. We controleren de gelijkheid van alle overeenkomende records en verwijderen de rij met het hoogste EmpId.
DELETE E1 FROM EmployeeDetails E1INNER JOIN EmployeeDetails E2 WHERE E1.EmpId > E2.EmpId AND E1.FullName = E2.FullName AND E1.ManagerId = E2.ManagerIdAND E1.DateOfJoining = E2.DateOfJoiningAND E1.City = E2.City;
Ques.34. Schrijf een SQL query om alleen oneven rijen uit de tabel te halen.
Ans. Als we een auto-increment veld hebben, bijv. EmpId, dan kunnen we gewoon de onderstaande query gebruiken-
SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) <> 0;
In het geval dat we niet zo’n veld hebben, kunnen we de onderstaande query’s gebruiken.
Gebruik maken van Row_number in SQL server en controleren of de rest bij deling door 2 1- is
SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 1;
Gebruik maken van een door de gebruiker gedefinieerde variabele in MySQL-
SELECT *FROM ( SELECT *, @rowNumber := @rowNumber+ 1 rn FROM EmployeeSalary JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 1;
Ques.35. Schrijf een SQL query om alleen even rijen uit de tabel te halen.
Ans. Als we een auto-increment veld hebben, bijv. EmpId, dan kunnen we gewoon de onderstaande query gebruiken-
SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) = 0;
In het geval dat we niet zo’n veld hebben, dan kunnen we de onderstaande query’s gebruiken.
Gebruik maken van Row_number in SQL server en controleren of de rest bij deling door 2 1- is
SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 0;
Gebruik maken van een door de gebruiker gedefinieerde variabele in MySQL-
SELECT *FROM ( SELECT *, @rowNumber := @rowNumber+ 1 rn FROM EmployeeSalary JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 0;
Ques.36. Schrijf een SQL query om een nieuwe tabel te maken met gegevens en structuur gekopieerd van een andere tabel.
Ans.
CREATE TABLE NewTable SELECT * FROM EmployeeSalary;
Ques.37. Schrijf een SQL query om een lege tabel te maken met dezelfde structuur als een andere tabel.
Ans. Hier kunnen we dezelfde query gebruiken als hierboven met False ‘WHERE’ voorwaarde-
CREATE TABLE NewTable SELECT * FROM EmployeeSalary where 1=0;
Ques.38. Schrijf een SQL-query om de top n records op te halen?
In MySQL met behulp van LIMIT-
SELECT *FROM EmployeeSalaryORDER BY Salary DESC LIMIT N;
In SQL server met behulp van TOP-commando-
SELECT TOP N *FROM EmployeeSalaryORDER BY Salary DESC;
Ques.39. Schrijf een SQL-query om het op één na hoogste salaris in de tabel te vinden.
Ans, met behulp van het trefwoord Top (SQL Server)-
SELECT TOP 1 SalaryFROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC )ORDER BY Salary ASC;
Gebruik van limietclausule(MySQL)-
SELECT SalaryFROM EmployeeORDER BY Salary DESC LIMIT N-1,1;
Ques.40. Schrijf een SQL-query om het op twee na hoogste salaris in een tabel te vinden zonder het trefwoord TOP/limit te gebruiken.
Ans. Dit is een van de meest gestelde interviewvragen. Hiervoor zullen we een gecorreleerde subquery gebruiken.
Om het op twee na hoogste salaris te vinden, zoeken we de salariswaarde totdat de binnenste query een telling van 2 rijen met een salaris dat hoger is dan andere afzonderlijke salarissen retourneert.
SELECT SalaryFROM EmployeeSalary Emp1WHERE 2 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )
Voor het op twee na hoogste salaris-
SELECT SalaryFROM EmployeeSalary Emp1WHERE N-1 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )
Hiermee eindigt onze post over veelgestelde SQL query-interviewvragen en antwoorden. Ik hoop dat deze vragen u helpen bij uw database-interviews.
Als u van mening bent dat we een aantal veelgestelde interviewvragen hebben gemist, laat het ons dan weten in de opmerkingen en we zullen deze vragen aan onze lijst toevoegen.
Kijk ook eens naar ons artikel over – Database Interviewvragen, met de nadruk op de theoretische interviewvragen op basis van de DBMS- en SQL-concepten.
Kuldeep is de oprichter en hoofdauteur van ArtOfTesting. Hij is bedreven in testautomatisering, prestatietests, big data en CI-CD. Hij brengt zijn tien jaar ervaring mee naar zijn huidige rol waarin hij zich toelegt op het opleiden van QA-professionals. U kunt met hem in contact komen op LinkedIn.