Hello friends! w tym poście, zobaczymy niektóre z najczęstszych zapytań SQL zadawane w wywiadach. Te SQL zapytania wywiadu pytania i odpowiedzi są przeznaczone zarówno dla świeżych i doświadczonych.
W rzeczywistości, zostałem poproszony o większość z tych pytań podczas wywiadów w różnych fazach mojej kariery.
Jeśli chcesz pominąć podstawowe pytania i zacząć od niektórych podchwytliwych zapytań SQL to możesz bezpośrednio przejść do naszych pytań SQL zapytania wywiadu dla doświadczonych sekcji.
Rozważ poniższe dwie tabele dla odniesienia podczas próby tworzenia zapytań dla pytań zadawanych tutaj.
Table – EmployeeDetails
EmpId | FullName | ManagerId | DateOfJoining | City |
---|---|---|---|---|
121 | John Snow | 321 | 01/31/2014 | Toronto |
321 | Walter White | 986 | 01/30/2015 | Kalifornia |
421 | Kuldeep Rana | 876 | 27/11/2016 | New Delhi |
Table – EmployeeSalary
EmpId | Project | Salary | Zmienna |
---|---|---|---|
121 | P1 | 8000 | 500 |
321 | P2 | 10000 | 1000 |
421 | P1 | 12000 | 0 |
Dla Państwa wygody, Zebrałem 10 najlepszych pytań dla Ciebie. Możesz spróbować rozwiązać te pytania i kliknąć na linki, aby przejść do odpowiednich odpowiedzi.
- Zapytanie do bazy danych, aby pobrać rekordy, które są obecne w jednej tabeli, ale nie ma ich w innej tabeli.
- Zapytanie do bazy danych, aby pobrać wszystkich pracowników, którzy nie pracują nad żadnym projektem.
- Zapytanie do bazy danych, aby pobrać wszystkich pracowników z EmployeeDetails, którzy dołączyli w roku 2020.
- Pobierz wszystkich pracowników z EmployeeDetails, którzy mają rekord wynagrodzenia w EmployeeSalary.
- Napisz zapytanie SQL, aby pobrać liczbę pracowników w zależności od projektu.
- Pobierz nazwiska pracowników i wynagrodzenie, nawet jeśli wartość wynagrodzenia nie jest obecna dla pracownika.
- Napisz zapytanie SQL, aby pobrać wszystkich pracowników, którzy są również menedżerami.
- Napisz zapytanie SQL, aby pobrać zduplikowane rekordy z EmployeeDetails.
- Napisz zapytanie SQL, aby pobrać tylko nieparzyste wiersze z tabeli.
- Napisz zapytanie, aby znaleźć trzecią najwyższą pensję z tabeli bez słowa kluczowego top lub limit.
Możesz również przejść do naszych poniższych dwóch sekcji dotyczących pytań kwalifikacyjnych dla świeżych i doświadczonych profesjonalistów.
Treść
SQL Query Interview Questions for Freshers
Tutaj znajduje się lista najlepszych pytań i odpowiedzi wywiadu SQL query dla świeższych kandydatów, które pomogą im w ich wywiadach. W tych zapytaniach skupimy się tylko na podstawowych komendach SQL.
Pytania.1. Napisz zapytanie SQL, aby pobrać EmpId i FullName wszystkich pracowników pracujących w Manager z id – '986′.
Ans. Możemy użyć tabeli EmployeeDetails, aby pobrać szczegóły pracowników z klauzulą where dla manager-
SELECT EmpId, FullNameFROM EmployeeDetailsWHERE ManagerId = 986;
Ques.2Napisz zapytanie SQL, aby pobrać różne projekty dostępne z tabeli EmployeeSalary.
Ans. Odnosząc się do tabeli EmployeeSalary, możemy zauważyć, że ta tabela zawiera wartości projektów odpowiadające każdemu pracownikowi, lub możemy powiedzieć, że będziemy mieli zduplikowane wartości projektów podczas wybierania wartości projektów z tej tabeli.
Więc, użyjemy klauzuli distinct, aby uzyskać unikalne wartości Projektu.
SELECT DISTINCT(Project)FROM EmployeeSalary;
Kwestie.3. Napisz zapytanie SQL, aby pobrać liczbę pracowników pracujących w projekcie 'P1′.
Ans. Tutaj użyjemy funkcji agregującej count() z klauzulą SQL where-
SELECT COUNT(*) FROM EmployeeSalary WHERE Project = 'P1';
Kwestie.4.Napisz zapytanie SQL, aby znaleźć maksymalne, minimalne i średnie wynagrodzenie pracowników. Możemy użyć funkcji agregującej SQL, aby pobrać wartości maksymalne, minimalne i średnie-
SELECT Max(Salary), Min(Salary), AVG(Salary) FROM EmployeeSalary;
Ques.5Napisz zapytanie SQL w celu znalezienia pracowników, których wynagrodzenie mieści się w przedziale od 9000 do 15000.
Ans. Tutaj możemy użyć operatora 'Between’ z klauzulą where.
SELECT EmpId, SalaryFROM EmployeeSalaryWHERE Salary BETWEEN 9000 AND 15000;
Ques.6. Napisz zapytanie SQL w celu znalezienia pracowników, którzy mieszkają w Toronto i pracują pod kierownikiem z ManagerId – 321.
Ans. Ponieważ musimy spełnić oba warunki – pracownicy mieszkający w 'Toronto’ i pracujący w projekcie 'P2′. Więc, użyjemy operatora AND tutaj-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='Toronto' AND ManagerId='321';
Ques.7. Write an SQL query to fetch all the employees who either live in California or work under a manager with ManagerId – 321.
Ans. This interview question requires us to satisfy either of the conditions – employees living in 'California’ and working under Manager with ManagerId '321′. Użyjemy więc tutaj operatora OR-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='California' OR ManagerId='321';
Ques.8Napisz zapytanie SQL, aby wyszukać wszystkich pracowników, którzy pracują w projekcie innym niż P1.
Ans. Tutaj możemy użyć operatora NOT, aby wyszukać wiersze, które nie spełniają podanego warunku.
SELECT EmpIdFROM EmployeeSalaryWHERE NOT Project='P1';
Or using the not equal to operator-
SELECT EmpIdFROM EmployeeSalaryWHERE Project <> 'P1';
Aby poznać różnicę między operatorami NOT i <> SQL, sprawdź ten link – Różnica między operatorami NOT i !=.
Pytania.9.Napisz zapytanie SQL, aby wyświetlić całkowitą pensję każdego pracownika, dodając wartość Salary do wartości zmiennej.
Ans. Tutaj możemy po prostu użyć operatora '+’ w SQL.
SELECT EmpId,Salary+Variable as TotalSalary FROM EmployeeSalary;
Ques.10Napisz zapytanie SQL, aby wyszukać pracowników, których nazwisko zaczyna się od dwóch dowolnych znaków, po których następuje tekst „hn” i kończy się dowolnym ciągiem znaków.
Ans. Dla tego pytania możemy utworzyć zapytanie SQL używając operatora like ze znakami wieloznacznymi '_’ i '%’, gdzie '_’ pasuje do pojedynczego znaku, a '%’ do '0 lub wielu znaków’.
SELECT FullNameFROM EmployeeDetailsWHERE FullName LIKE '__hn%';
Ques.11Napisz zapytanie SQL w celu pobrania wszystkich identyfikatorów pracowników, które są obecne w jednej z tabel – 'EmployeeDetails’ i 'EmployeeSalary’.
Ans. W celu uzyskania unikalnych identyfikatorów pracowników z obu tabel, możemy użyć klauzuli Union, która może połączyć wyniki dwóch zapytań SQL i zwrócić unikalne wiersze.
SELECT EmpId FROM EmployeeDetailsUNION SELECT EmpId FROM EmployeeSalary;
Ques.12Napisz zapytanie SQL w celu pobrania wspólnych rekordów z dwóch tabel.
Ans. SQL Server – Użycie operatora INTERSECT-
SELECT * FROM EmployeeSalaryINTERSECTSELECT * FROM ManagerSalary;
MySQL – Ponieważ MySQL nie posiada operatora INTERSECT, możemy użyć podzapytania-
SELECT *FROM EmployeeSalaryWHERE EmpId IN (SELECT EmpId from ManagerSalary);
Ques.13Napisz zapytanie SQL w celu pobrania rekordów, które są obecne w jednej tabeli, ale nie ma ich w innej tabeli.
Ans. SQL Server – Użycie operatora MINUS-
SELECT * FROM EmployeeSalaryMINUSSELECT * FROM ManagerSalary;
MySQL – Ponieważ MySQL nie posiada operatora MINUS, więc możemy użyć złączenia LEFT-
SELECT EmployeeSalary.*FROM EmployeeSalaryLEFT JOINManagerSalary USING (EmpId)WHERE ManagerSalary.EmpId IS NULL;
Ques.14Napisz zapytanie SQL aby pobrać EmpIds, które są obecne w obu tabelach – 'EmployeeDetails’ i 'EmployeeSalary.
Ans. używając podzapytania-
SELECT EmpId FROM EmployeeDetails where EmpId IN (SELECT EmpId FROM EmployeeSalary);
Ques.15. Napisz zapytanie SQL aby pobrać EmpIds, które są obecne w EmployeeDetails ale nie w EmployeeSalary.
Ans. używając podzapytania-
SELECT EmpId FROM EmployeeDetails where EmpId Not IN (SELECT EmpId FROM EmployeeSalary);
Ques.16Napisz zapytanie SQL pobierające pełne imiona pracowników i zastępujące spację ’-’.
Ans. Korzystając z funkcji 'Replace’-
SELECT REPLACE(FullName, ' ', '-') FROM EmployeeDetails;
Ques.17. Napisz zapytanie SQL pobierające pozycję danego znaku(ów) w polu.
Ans. Korzystając z funkcji 'Instr’-
SELECT INSTR(FullName, 'Snow')FROM EmployeeDetails;
Ques.18.Napisz zapytanie SQL, aby wyświetlić razem EmpId i ManagerId.
Ans. Tutaj możemy użyć polecenia CONCAT.
SELECT CONCAT(EmpId, ManagerId) as NewIdFROM EmployeeDetails;
Ques.19. Napisz zapytanie, aby pobrać tylko pierwsze imię (ciąg znaków przed spacją) z kolumny FullName tabeli EmployeeDetails.
Ans. W tym pytaniu jesteśmy zobowiązani najpierw pobrać lokalizację znaku spacji w polu FullName, a następnie wyodrębnić pierwsze imię z pola FullName.
Do znalezienia lokalizacji użyjemy metody LOCATE w MySQL i CHARINDEX w SQL SERVER, a do pobrania łańcucha przed spacją użyjemy metody SUBSTRING LUB MID.
MySQL – używając MID
SELECT MID(FullName, 1, LOCATE(' ',FullName)) FROM EmployeeDetails;
SQL Server – używając SUBSTRING
SELECT SUBSTRING(FullName, 1, CHARINDEX(' ',FullName)) FROM EmployeeDetails;
Pyt.20.Napisz zapytanie SQL, które ma za zadanie wypisać wielką literą nazwisko pracownika oraz małą literą wartości miasta.
Ans. Możemy użyć funkcji SQL Upper i Lower, aby osiągnąć zamierzone rezultaty.
SELECT UPPER(FullName), LOWER(City) FROM EmployeeDetails;
Ques.21. Napisz zapytanie SQL, aby znaleźć liczbę całkowitych wystąpień określonego znaku – 'n’ w polu FullName.
Ans. Możemy tutaj skorzystać z funkcji 'Length’. Możemy odjąć całkowitą długość pola FullName z długością FullName po zastąpieniu znaku – 'n’.
SELECT FullName, LENGTH(FullName) - LENGTH(REPLACE(FullName, 'n', ''))FROM EmployeeDetails;
Zapytania.22. Napisać zapytanie SQL aktualizujące nazwiska pracowników poprzez usunięcie spacji wiodących i końcowych.
Ans. Korzystając z polecenia 'Update’ z funkcją 'LTRIM’ i 'RTRIM’.
UPDATE EmployeeDetails SET FullName = LTRIM(RTRIM(FullName));
Ques.23. Wyszukać wszystkich pracowników, którzy nie pracują nad żadnym projektem.
Ans. Jest to jedno z bardzo podstawowych pytań wywiadu, w którym ankieter chce sprawdzić, czy dana osoba wie o powszechnie stosowanym – Is NULL operator.
SELECT EmpId FROM EmployeeSalary WHERE Project IS NULL;
Ques.24.Napisz zapytanie SQL w celu pobrania nazwisk pracowników z wynagrodzeniem większym lub równym 5000 i mniejszym lub równym 10000.
Ans. W tym przypadku użyjemy BETWEEN w klauzuli 'where’, aby zwrócić EmpId pracowników z wynagrodzeniem spełniającym wymagane kryteria, a następnie użyjemy go jako podzapytania, aby znaleźć pełną nazwę pracownika z tabeli EmployeeDetails.
SELECT FullName FROM EmployeeDetails WHERE EmpId IN (SELECT EmpId FROM EmployeeSalary WHERE Salary BETWEEN 5000 AND 10000);
Ques.25. Napisać zapytanie SQL w celu znalezienia aktualnej daty czasu.
Ans. MySQL-
SELECT NOW();
SQL Server-
SELECT getdate();
Oracle-
SELECT SYSDATE FROM DUAL;
Ques.26.Napisz zapytanie SQL, aby pobrać wszystkie szczegóły pracowników z tabeli EmployeeDetails, którzy dołączyli w roku 2020.
Ans. Używając BETWEEN dla zakresu dat ’01-01-2020′ AND ’31-12-2020′ –
SELECT * FROM EmployeeDetailsWHERE DateOfJoining BETWEEN '2020/01/01'AND '2020/12/31';
Możemy również wyodrębnić część roku z daty dołączenia (używając YEAR w mySQL)-
SELECT * FROM EmployeeDetails WHERE YEAR(DateOfJoining) = '2020';
Ques.27.Napisać zapytanie SQL pobierające wszystkie rekordy pracowników z tabeli EmployeeDetails, którzy posiadają rekord wynagrodzenia w tabeli EmployeeSalary.
Ans. Using 'Exists’-
SELECT * FROM EmployeeDetails EWHERE EXISTS(SELECT * FROM EmployeeSalary S WHERE E.EmpId = S.EmpId);
Ques.28. Napisz zapytanie SQL pobierające liczbę pracowników posortowanych według projektu w porządku malejącym.
Ans. Zapytanie ma dwa wymagania – najpierw pobrać liczbę pracowników w projekcie, a następnie posortować wynik według tej liczby.
Dla liczenia według projektów będziemy używać klauzuli GROUP BY, a dla sortowania użyjemy klauzuli ORDER BY na aliasie project-count.
SELECT Project, count(EmpId) EmpProjectCountFROM EmployeeSalaryGROUP BY ProjectORDER BY EmpProjectCount DESC;
Kwerenda.29. Napisz zapytanie pobierające nazwiska pracowników i rekordy wynagrodzeń. Wyświetl szczegóły pracownika, nawet jeśli rekord wynagrodzenia nie jest obecny dla pracownika.
Ans. Jest to ponownie jedno z bardzo częstych pytań kwalifikacyjnych, w których ankieter chce po prostu sprawdzić podstawową wiedzę na temat SQL JOINS.
W tym przypadku możemy użyć lewego złączenia z tabelą EmployeeDetail po lewej stronie tabeli EmployeeSalary.
SELECT E.FullName, S.Salary FROM EmployeeDetails E LEFT JOIN EmployeeSalary SON E.EmpId = S.EmpId;
Pytania.30. Napisz zapytanie SQL, aby dołączyć do 3 tabel.
Ans. Biorąc pod uwagę 3 tabele TableA, TableB, i TableC, możemy użyć 2 klauzule joins jak poniżej-
SELECT column1, column2FROM TableAJOIN TableB ON TableA.Column3 = TableB.Column3JOIN TableC ON TableA.Column4 = TableC.Column4;
Aby uzyskać więcej pytań na temat SQL Joins, można również sprawdzić nasze najlepsze SQL Joins Pytania Wywiad.
SQL Query Pytania Wywiad dla doświadczonych
Oto lista niektórych z najczęściej zadawanych pytań SQL zapytania wywiadu dla doświadczonych profesjonalistów. Pytania te obejmują zapytania SQL na zaawansowanych koncepcji SQL JOIN, pobieranie duplikatów wierszy, nieparzyste i parzyste wiersze, nth najwyższe wynagrodzenie, itp.
Pytania. 31. Napisz zapytanie SQL, aby pobrać wszystkich pracowników, którzy są również menedżerami z tabeli EmployeeDetails.
Ans. Tutaj musimy użyć Self-Join, ponieważ wymaganie chce, abyśmy przeanalizowali tabelę EmployeeDetails jako dwie tabele. Będziemy używać różnych aliasów 'E’ i 'M’ dla tej samej tabeli EmployeeDetails.
SELECT DISTINCT E.FullNameFROM EmployeeDetails EINNER JOIN EmployeeDetails MON E.EmpID = M.ManagerID;
Aby dowiedzieć się więcej o Self Join wraz z kilkoma innymi zapytaniami, możesz obejrzeć poniższy film, który wyjaśnia koncepcję Self Join w bardzo prosty sposób.