Ciao amici! in questo post, vedremo alcune delle più comuni query SQL chieste nelle interviste. Queste domande e risposte alle interviste sulle query SQL sono pensate sia per le matricole che per gli esperti.
In effetti, mi sono state poste la maggior parte di queste domande durante le interviste nelle diverse fasi della mia carriera.
Se vuoi saltare le domande di base e iniziare con alcune complicate query SQL allora puoi passare direttamente alle nostre domande di intervista SQL per la sezione esperti.
Considera le due tabelle seguenti come riferimento mentre cerchi di creare query per le domande qui poste.
Tabella – EmployeeDetails
EmpId | FullName | ManagerId | DateOfJoining | City |
---|---|---|---|---|
121 | John Snow | 321 | 01/31/2014 | Toronto |
321 | Walter White | 986 | 01/30/2015 | California |
421 | Kuldeep Rana | 876 | 27/11/2016 | New Delhi |
Tabella – EmployeeSalary
EmpId | Progetto | Salario | Variabile |
---|---|---|---|
121 | P1 | 8000 | 500 |
321 | P2 | 10000 | 1000 |
421 | P1 | 12000 | 0 |
Per vostra comodità, Ho compilato le prime 10 domande per te. Potete provare a risolvere queste domande e cliccare sui link per andare alle rispettive risposte.
- Query SQL per recuperare i record che sono presenti in una tabella ma non in un’altra tabella.
- Query SQL per recuperare tutti i dipendenti che non stanno lavorando a nessun progetto.
- Query SQL per recuperare tutti i dipendenti da EmployeeDetails che si sono uniti nell’anno 2020.
- Prendere tutti i dipendenti da EmployeeDetails che hanno un record di stipendio in EmployeeSalary.
- Scrivere una query SQL per prendere il conteggio dei dipendenti per progetto.
- Prendere i nomi dei dipendenti e lo stipendio anche se il valore dello stipendio non è presente per il dipendente.
- Scrivere una query SQL per prendere tutti i dipendenti che sono anche manager.
- Scrivi una query SQL per recuperare i record duplicati da EmployeeDetails.
- Scrivi una query SQL per recuperare solo le righe dispari dalla tabella.
- Scrivi una query per trovare il 3° stipendio più alto da una tabella senza parola chiave top o limit.
O, puoi anche saltare alle nostre due sezioni sottostanti sulle domande di colloquio per le matricole e i professionisti esperti.
Contenuto
Domande di intervista SQL Query per matricole
Ecco una lista delle migliori domande e risposte di intervista SQL query per candidati matricole che li aiuterà nelle loro interviste. In queste domande, ci concentreremo solo sui comandi SQL di base.
Quesiti.1. Scrivere una query SQL per recuperare l’EmpId e il FullName di tutti gli impiegati che lavorano sotto Manager con id – ‘986’.
Ans. Possiamo usare la tabella EmployeeDetails per recuperare i dettagli degli impiegati con una clausola where per il manager-
SELECT EmpId, FullNameFROM EmployeeDetailsWHERE ManagerId = 986;
Ques.2Scrivere una query SQL per recuperare i diversi progetti disponibili dalla tabella EmployeeSalary.
Ans. Facendo riferimento alla tabella EmployeeSalary, possiamo vedere che questa tabella contiene i valori dei progetti corrispondenti ad ogni dipendente, o possiamo dire che avremo valori di progetto duplicati mentre selezioniamo i valori di progetto da questa tabella.
Quindi, useremo la clausola distinct per ottenere i valori unici del progetto.
SELECT DISTINCT(Project)FROM EmployeeSalary;
Ques.3. Scrivi una query SQL per trovare il conteggio dei dipendenti che lavorano nel progetto ‘P1’.
Ans. qui, useremo la funzione aggregata count() con la clausola SQL where-
SELECT COUNT(*) FROM EmployeeSalary WHERE Project = 'P1';
Ques.4Scrivere una query SQL per trovare lo stipendio massimo, minimo e medio degli impiegati.
Ans. Possiamo usare la funzione aggregata di SQL per trovare i valori massimi, minimi e medi-
SELECT Max(Salary), Min(Salary), AVG(Salary) FROM EmployeeSalary;
Ques.5Scrivere una query SQL per trovare l’id del dipendente il cui stipendio si trova nell’intervallo tra 9000 e 15000.
Ans. Qui, possiamo usare l’operatore ‘Between’ con una clausola where.
SELECT EmpId, SalaryFROM EmployeeSalaryWHERE Salary BETWEEN 9000 AND 15000;
Ques.6. Scrivere una query SQL per trovare quei dipendenti che vivono a Toronto e lavorano sotto il manager con ManagerId – 321.
Ans. Poiché dobbiamo soddisfare entrambe le condizioni – dipendenti che vivono a ‘Toronto’ e lavorano nel progetto ‘P2’. Quindi, useremo l’operatore AND qui-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='Toronto' AND ManagerId='321';
Quesues.7. Scrivere una query SQL per trovare tutti gli impiegati che vivono in California o lavorano sotto un manager con ManagerId – 321.
Ans. Questa domanda di intervista ci richiede di soddisfare entrambe le condizioni – impiegati che vivono in ‘California’ e lavorano sotto Manager con ManagerId ‘321’. Quindi, useremo l’operatore OR qui-
SELECT EmpId, City, ManagerIdFROM EmployeeDetailsWHERE City='California' OR ManagerId='321';
Ques.8Scrivere una query SQL per trovare tutti gli impiegati che lavorano su un progetto diverso da P1.
Ans. Qui, possiamo usare l’operatore NOT per trovare le righe che non soddisfano la condizione data.
SELECT EmpIdFROM EmployeeSalaryWHERE NOT Project='P1';
Oppure usando l’operatore not equal to-
SELECT EmpIdFROM EmployeeSalaryWHERE Project <> 'P1';
Per la differenza tra gli operatori NOT e <> SQL, controlla questo link – Differenza tra gli operatori NOT e !=.
Quesiti.9Scrivere una query SQL per visualizzare lo stipendio totale di ogni dipendente aggiungendo lo stipendio con il valore variabile.
Ans. Qui, possiamo semplicemente usare l’operatore ‘+’ in SQL.
SELECT EmpId,Salary+Variable as TotalSalary FROM EmployeeSalary;
Ques.10Scrivere una query SQL per recuperare i dipendenti il cui nome inizia con due caratteri qualsiasi, seguito da un testo “hn” e finisce con una qualsiasi sequenza di caratteri.
Ans. Per questa domanda, possiamo creare una query SQL usando l’operatore like con i caratteri jolly “_” e “%”, dove “_” corrisponde a un singolo carattere e “%” corrisponde a “0 o più caratteri”.
SELECT FullNameFROM EmployeeDetailsWHERE FullName LIKE '__hn%';
Ques.11Scrivere una query SQL per recuperare tutti gli ID dei dipendenti che sono presenti in una delle tabelle – ‘EmployeeDetails’ e ‘EmployeeSalary’.
Ans. Per ottenere gli ID dei dipendenti unici da entrambe le tabelle, possiamo usare la clausola Union che può combinare i risultati delle due query SQL e restituire righe uniche.
SELECT EmpId FROM EmployeeDetailsUNION SELECT EmpId FROM EmployeeSalary;
Ques.12Scrivere una query SQL per recuperare record comuni tra due tabelle.
Ans. SQL Server – Usare l’operatore INTERSECT-
SELECT * FROM EmployeeSalaryINTERSECTSELECT * FROM ManagerSalary;
MySQL – Poiché MySQL non ha l’operatore INTERSECT possiamo usare la sub query-
SELECT *FROM EmployeeSalaryWHERE EmpId IN (SELECT EmpId from ManagerSalary);
Ques.13Scrivere una query SQL per recuperare i record che sono presenti in una tabella ma non in un’altra tabella.
Ans. SQL Server – Usare l’operatore MINUS-
SELECT * FROM EmployeeSalaryMINUSSELECT * FROM ManagerSalary;
MySQL – Poiché MySQL non ha l’operatore MINUS possiamo usare LEFT join-
SELECT EmployeeSalary.*FROM EmployeeSalaryLEFT JOINManagerSalary USING (EmpId)WHERE ManagerSalary.EmpId IS NULL;
Ques.14Scrivere una query SQL per recuperare gli EmpId che sono presenti in entrambe le tabelle – ‘EmployeeDetails’ e ‘EmployeeSalary.
Ans. usando la sub query-
SELECT EmpId FROM EmployeeDetails where EmpId IN (SELECT EmpId FROM EmployeeSalary);
Ques.15. Scrivere una query SQL per recuperare gli EmpId che sono presenti in EmployeeDetails ma non in EmployeeSalary.
Ans. usando la sub query-
SELECT EmpId FROM EmployeeDetails where EmpId Not IN (SELECT EmpId FROM EmployeeSalary);
Ques.16Scrivere una query SQL per recuperare i nomi completi dei dipendenti e sostituire lo spazio con ‘-‘.
Ans. usando la funzione ‘Replace’-
SELECT REPLACE(FullName, ' ', '-') FROM EmployeeDetails;
Ques.17. Scrivere una query SQL per recuperare la posizione di un dato carattere(i) in un campo.
Ans. usando la funzione ‘Instr’-
SELECT INSTR(FullName, 'Snow')FROM EmployeeDetails;
Ques.18Scrivere una query SQL per visualizzare EmpId e ManagerId insieme.
Ans. Qui possiamo usare il comando CONCAT.
SELECT CONCAT(EmpId, ManagerId) as NewIdFROM EmployeeDetails;
Ques.19. Scrivere una query per recuperare solo il primo nome (stringa prima dello spazio) dalla colonna FullName della tabella EmployeeDetails.
Ans. In questa domanda, ci viene richiesto di trovare prima la posizione del carattere spazio nel campo FullName e poi estrarre il primo nome dal campo FullName.
Per trovare la posizione useremo il metodo LOCATE in MySQL e CHARINDEX in SQL SERVER e per recuperare la stringa prima dello spazio, useremo il metodo SUBSTRING o MID.
MySQL – usando MID
SELECT MID(FullName, 1, LOCATE(' ',FullName)) FROM EmployeeDetails;
SQL Server – usando SUBSTRING
SELECT SUBSTRING(FullName, 1, CHARINDEX(' ',FullName)) FROM EmployeeDetails;
Ques.20Scrivere una query SQL per trovare le maiuscole il nome dell’impiegato e le minuscole i valori della città.
Ans. Possiamo usare le funzioni SQL Upper e Lower per ottenere i risultati desiderati.
SELECT UPPER(FullName), LOWER(City) FROM EmployeeDetails;
Ques.21. Scrivere una query SQL per trovare il conteggio delle occorrenze totali di un particolare carattere – ‘n’ nel campo FullName.
Ans. Qui, possiamo usare la funzione ‘Length’. Possiamo sottrarre la lunghezza totale del campo FullName con la lunghezza del FullName dopo aver sostituito il carattere – ‘n’.
SELECT FullName, LENGTH(FullName) - LENGTH(REPLACE(FullName, 'n', ''))FROM EmployeeDetails;
Quesiti.22. Scrivere una query SQL per aggiornare i nomi dei dipendenti rimuovendo gli spazi iniziali e finali.
Ans. usando il comando ‘Update’ con la funzione ‘LTRIM’ e ‘RTRIM’.
UPDATE EmployeeDetails SET FullName = LTRIM(RTRIM(FullName));
Ques.23. Cercare tutti gli impiegati che non stanno lavorando a nessun progetto.
Ans. Questa è una delle domande di intervista molto basilari in cui l’intervistatore vuole vedere se la persona conosce l’operatore comunemente usato – Is NULL.
SELECT EmpId FROM EmployeeSalary WHERE Project IS NULL;
Ques.24Scrivere una query SQL per trovare i nomi dei dipendenti che hanno uno stipendio maggiore o uguale a 5000 e minore o uguale a 10000.
Ans. Qui, useremo BETWEEN nella clausola ‘where’ per restituire l’EmpId dei dipendenti con lo stipendio che soddisfa i criteri richiesti e poi usarlo come subquery per trovare il fullName del dipendente dalla tabella EmployeeDetails.
SELECT FullName FROM EmployeeDetails WHERE EmpId IN (SELECT EmpId FROM EmployeeSalary WHERE Salary BETWEEN 5000 AND 10000);
Ques.25. Scrivere una query SQL per trovare la data-ora corrente.
Ans. MySQL-
SELECT NOW();
SQL Server-
SELECT getdate();
Oracle-
SELECT SYSDATE FROM DUAL;
Ques.26Scrivere una query SQL per recuperare tutti i dettagli dei dipendenti dalla tabella EmployeeDetails che si sono uniti nell’anno 2020.
Ans. Usando BETWEEN per l’intervallo di date ’01-01-2020′ E ’31-12-2020′-
SELECT * FROM EmployeeDetailsWHERE DateOfJoining BETWEEN '2020/01/01'AND '2020/12/31';
Inoltre, possiamo estrarre la parte di anno dalla data di adesione (usando YEAR in mySQL)-
SELECT * FROM EmployeeDetails WHERE YEAR(DateOfJoining) = '2020';
Ques.27Scrivere una query SQL per recuperare tutti i record dei dipendenti dalla tabella EmployeeDetails che hanno un record di stipendio nella tabella EmployeeSalary.
Ans. usando ‘Exists’-
SELECT * FROM EmployeeDetails EWHERE EXISTS(SELECT * FROM EmployeeSalary S WHERE E.EmpId = S.EmpId);
Ques.28. Scrivere una query SQL per recuperare il conteggio dei dipendenti in base al progetto ordinato in ordine decrescente.
Ans. la query ha due requisiti – prima di recuperare il conteggio in base al progetto e poi di ordinare il risultato in base a quel conteggio.
Per il conteggio per progetto, useremo la clausola GROUP BY e per l’ordinamento, useremo la clausola ORDER BY sull’alias del conteggio per progetto.
SELECT Project, count(EmpId) EmpProjectCountFROM EmployeeSalaryGROUP BY ProjectORDER BY EmpProjectCount DESC;
Ques.29. Scrivere una query per recuperare i nomi dei dipendenti e i record dei salari. Visualizza i dettagli del dipendente anche se il record di stipendio non è presente per il dipendente.
Ans. Questa è di nuovo una delle domande di intervista molto comune in cui l’intervistatore vuole solo controllare la conoscenza di base di SQL JOINS.
Qui, possiamo usare left join con la tabella EmployeeDetail sul lato sinistro della tabella EmployeeSalary.
SELECT E.FullName, S.Salary FROM EmployeeDetails E LEFT JOIN EmployeeSalary SON E.EmpId = S.EmpId;
Quesito.30. Scrivere una query SQL per unire 3 tabelle.
Considerando 3 tabelle TableA, TableB, e TableC, possiamo usare 2 clausole di unione come sotto-
SELECT column1, column2FROM TableAJOIN TableB ON TableA.Column3 = TableB.Column3JOIN TableC ON TableA.Column4 = TableC.Column4;
Per altre domande su SQL Joins, puoi anche controllare le nostre migliori domande di intervista SQL Joins.
Domande di Intervista su Query SQL per Esperti
Ecco la lista di alcune delle più frequenti domande di intervista su query SQL per professionisti esperti. Queste domande riguardano le query SQL su concetti avanzati di SQL JOIN, il recupero di righe duplicate, righe pari e dispari, l’ennesimo stipendio più alto, ecc.
Quesiti. 31. Scrivere una query SQL per recuperare tutti gli impiegati che sono anche manager dalla tabella EmployeeDetails.
Ans. Qui, dobbiamo usare Self-Join perché il requisito ci vuole analizzare la tabella EmployeeDetails come due tabelle. Useremo diversi alias ‘E’ e ‘M’ per la stessa tabella EmployeeDetails.
SELECT DISTINCT E.FullNameFROM EmployeeDetails EINNER JOIN EmployeeDetails MON E.EmpID = M.ManagerID;
Per saperne di più sul Self Join insieme ad altre query, puoi guardare il video qui sotto che spiega il concetto di Self Join in modo molto semplice.
Ques.32. Scrivere una query SQL per recuperare i record duplicati da EmployeeDetails (senza considerare la chiave primaria – EmpId).
Ans. Per trovare i record duplicati dalla tabella, possiamo usare GROUP BY su tutti i campi e poi usare la clausola HAVING per restituire solo quei campi il cui conteggio è maggiore di 1, cioè le righe con record duplicati.
SELECT FullName, ManagerId, DateOfJoining, City, COUNT(*)FROM EmployeeDetailsGROUP BY FullName, ManagerId, DateOfJoining, CityHAVING COUNT(*) > 1;
Ques.33. Scrivi una query SQL per rimuovere i duplicati da una tabella senza usare una tabella temporanea.
Ans. Qui, possiamo usare delete con alias e inner join. Controlleremo l’uguaglianza di tutti i record corrispondenti e rimuoveremo la riga con EmpId più alto.
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. Scrivere una query SQL per recuperare solo le righe dispari dalla tabella.
Ans. Nel caso in cui abbiamo un campo di auto-incremento e.g. EmpId allora possiamo semplicemente usare la seguente query-
SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) <> 0;
Nel caso in cui non abbiamo un tale campo allora possiamo usare le seguenti query.
Utilizzando Row_number in SQL server e controllando che il resto quando diviso per 2 sia 1-
SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 1;
Utilizzando una variabile definita dall’utente in MySQL-
SELECT *FROM ( SELECT *, @rowNumber := @rowNumber+ 1 rn FROM EmployeeSalary JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 1;
Ques.35. Scrivere una query SQL per recuperare solo le righe pari dalla tabella.
Ans. Nel caso in cui abbiamo un campo di auto-incremento e.g. EmpId allora possiamo semplicemente usare la seguente query-
SELECT * FROM EmployeeDetails WHERE MOD (EmpId, 2) = 0;
Nel caso in cui non abbiamo un tale campo allora possiamo usare le seguenti query.
Utilizzando Row_number in SQL server e controllando che il resto quando diviso per 2 sia 1-
SELECT E.EmpId, E.Project, E.SalaryFROM ( SELECT *, Row_Number() OVER(ORDER BY EmpId) AS RowNumber FROM EmployeeSalary) EWHERE E.RowNumber % 2 = 0;
Utilizzando una variabile definita dall’utente in MySQL-
SELECT *FROM ( SELECT *, @rowNumber := @rowNumber+ 1 rn FROM EmployeeSalary JOIN (SELECT @rowNumber:= 0) r ) t WHERE rn % 2 = 0;
Ques.36. Scrivere una query SQL per creare una nuova tabella con dati e struttura copiati da un’altra tabella.
Ans.
CREATE TABLE NewTable SELECT * FROM EmployeeSalary;
Ques.37. Scrivere una query SQL per creare una tabella vuota con la stessa struttura di un’altra tabella.
Ans. Qui, possiamo usare la stessa query come sopra con la condizione ‘WHERE’ falsa-
CREATE TABLE NewTable SELECT * FROM EmployeeSalary where 1=0;
Ques.38. In MySQL usando LIMIT-
SELECT *FROM EmployeeSalaryORDER BY Salary DESC LIMIT N;
In SQL server usando il comando TOP-
SELECT TOP N *FROM EmployeeSalaryORDER BY Salary DESC;
Ques.39. Scrivere una query SQL per trovare l’ennesimo stipendio più alto dalla tabella.
Ans, usando la parola chiave Top (SQL Server)-
SELECT TOP 1 SalaryFROM ( SELECT DISTINCT TOP N Salary FROM Employee ORDER BY Salary DESC )ORDER BY Salary ASC;
Usando la clausola limit (MySQL)-
SELECT SalaryFROM EmployeeORDER BY Salary DESC LIMIT N-1,1;
Ques.40. Scrivi una query SQL per trovare il 3° stipendio più alto da una tabella senza usare la parola chiave TOP/limit.
Ans. Questa è una delle domande di intervista più comuni. Per questo, useremo una subquery correlata.
Per trovare il 3° stipendio più alto, troveremo il valore dello stipendio fino a quando la query interna restituisce un conteggio di 2 righe che hanno lo stipendio maggiore di altri stipendi distinti.
SELECT SalaryFROM EmployeeSalary Emp1WHERE 2 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )
Per l’ennesimo stipendio più alto-
SELECT SalaryFROM EmployeeSalary Emp1WHERE N-1 = ( SELECT COUNT( DISTINCT ( Emp2.Salary ) ) FROM EmployeeSalary Emp2 WHERE Emp2.Salary > Emp1.Salary )
Questo conclude il nostro post sulle domande e risposte frequenti alle interviste SQL. Spero che queste domande vi aiutino nelle vostre interviste di database.
Se pensi che ci siamo persi qualche domanda comune, faccelo sapere nei commenti e aggiungeremo queste domande alla nostra lista.
Da’ un’occhiata al nostro articolo su – Domande di Intervista su Database, che si concentra sulle domande teoriche basate sui concetti DBMS e SQL.
Kuldeep è il fondatore e autore principale di ArtOfTesting. È esperto in automazione dei test, test delle prestazioni, big data e CI-CD. Porta la sua esperienza decennale al suo ruolo attuale, dove si dedica a educare i professionisti del QA. Potete connettervi con lui su LinkedIn.