Top 10 Advanced Data Science SQL-interviewspørgsmål, du skal vide, hvordan du skal besvare

Top 10 Advanced Data Science SQL-interviewspørgsmål, du skal vide, hvordan du skal besvare

Kildeknude: 1924451

Top 10 Advanced Data Science SQL-interviewspørgsmål, du skal vide, hvordan du skal besvare
Billede af forfatter 

SQL (Structured Query Language) er et standard programmeringssprog, der bruges til at administrere og manipulere databaser. Det er en væsentlig færdighed for enhver dataprofessionel, da den giver dem mulighed for effektivt at hente og analysere data, der er gemt i en database. Som et resultat er SQL et almindeligt emne i tekniske interviews til stillinger, der involverer arbejde med data, svarende til dataanalytikere, dataingeniører og databaseadministratorer. 

SQL-forespørgsel for at finde n. højeste løn/betaling eller 3. højeste løn/betaling

For at finde den n. højeste løn kan du bruge en underforespørgsel med DENSE_RANK()-funktionen til at beregne den tætte rangering af hver løn og derefter filtrere resultaterne til kun at inkludere rækken med rangeringen lig med n.

SELECT * FROM ( SELECT name, salary, DENSE_RANK() OVER ( ORDER BY salary DESC ) as salary_rank FROM employees ) subquery WHERE salary_rank = n;

 

Du kan også bruge LIMIT- og OFFSET-klausulerne til at finde den n. højeste løn, som følger:

SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 1 OFFSET (n - 1);

 

For eksempel, for at finde den 3. højeste løn, skal du bruge følgende forespørgsel:

SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 1 OFFSET 2;

 

Hvordan optimerer du SQL-forespørgsler til ydeevne?

Der er flere måder at optimere SQL-forespørgsler for bedre ydeevne, bl.a

Indeksering 

Oprettelse af et indeks på en kolonne eller gruppe af kolonner kan markant forbedre hastigheden af ​​forespørgsler, der filtrerer på disse kolonner. 

Partitionering 

Opdeling af en stor tabel i mindre stykker kan forbedre ydeevnen af ​​forespørgsler, der kun behøver at få adgang til en delmængde af dataene. 

normalisering 

Normalisering involverer at organisere dataene i en database, så hvert stykke data kun gemmes ét sted, hvilket reducerer redundans og perfektionerer dataenes integritet.

Brug af passende datatyper 

Brug af den korrekte datatype for hver kolonne kan forbedre ydeevnen af ​​forespørgsler, der filtrerer eller sorterer på disse kolonner. 

Brug af passende JOIN-typer 

Brug af den korrekte JOIN-type (f.eks. INNER JOIN, OUTER JOIN, CROSS JOIN) kan forbedre ydeevnen af ​​forespørgsler, der forbinder flere tabeller.

Brug af passende aggregerede funktioner 

Brug af passende aggregerede funktioner (f.eks. SUM, AVG, MIN, MAX) kan forbedre ydeevnen af ​​forespørgsler, der udfører beregninger på store datasæt. Nogle samlede funktioner, der ligner COUNT, er mere effektive end andre, så det er vigtigt at vælge den relevante funktion til din forespørgsel.

Hvordan bruger du LAG- og LEAD-funktionerne i SQL? Kan du give et eksempel på deres brug?

Funktionerne LAG() og LEAD() er vinduesfunktioner i SQL, der giver dig mulighed for at sammenligne værdier i en række med værdier i henholdsvis en forudgående eller efterfølgende række. De er nyttige til at beregne løbende totaler eller til at sammenligne værdier i en tabel med værdier i en tidligere eller efterfølgende række.

LAG() funktion tager to argumenter: kolonnen, der skal returneres, og antallet af rækker, der skal gå tilbage. For eksempel

SELECT name, salary, LAG(salary, 1) OVER ( ORDER BY salary DESC ) as prev_salary FROM employees;

 

LEAD() funktion fungerer på lignende måde, men går fremad frem for tilbage. For eksempel

SELECT name, salary, LEAD(salary, 1) OVER ( ORDER BY salary DESC ) as next_salary FROM employees

Forklar ETL og ELT koncept i SQL

ETL (Extract, Transform, Load) er en proces, der bruges i SQL til at udtrække data fra en eller flere kilder, transformere dataene til et format, der er egnet til analyse eller anden brug, og derefter indlæse dataene i et målsystem, såsom en data lager eller datasø.

ELT (Extract, Load, Transform) ligner ETL, men transformationsfasen udføres, efter at dataene er indlæst i målsystemet, snarere end før. Dette gør det muligt for målsystemet at udføre transformationerne, hvilket kan være mere effektivt og skalerbart end at udføre transformationerne i et ETL-værktøj. ELT bruges ofte i moderne datainfrastrukturer, som bruger kraftfulde databehandlingsmotorer (såsom Apache Spark eller Apache Flink) til at udføre transformationsfasen.

Kan du forklare forskellen mellem WHERE og HAVING klausulerne i SQL 

WHERE- og HAVING-sætningerne bruges begge til at filtrere rækker fra en SELECT-sætning. Den største forskel mellem de to er, at WHERE-udtrykket bruges til at filtrere rækker før gruppen efter operation, mens HAVING-udtrykket bruges til at filtrere rækker efter gruppen efter operation.

SELECT department, SUM(salary) FROM employees GROUP BY department HAVING SUM(salary) > 100000;

 

I dette eksempel bruges HAVING-klausulen til at bortfiltrere alle afdelinger, hvor summen af ​​lønningerne for medarbejdere i den pågældende afdeling er mindre end 100000. Dette gøres efter gruppen efter operation, så det kun påvirker rækkerne, der repræsenterer hver afdeling.

SELECT * FROM employees WHERE salary > 50000;

 

I dette eksempel bruges WHERE-klausulen til at bortfiltrere alle medarbejdere med en løn på mindre end 50000. Dette gøres før enhver gruppe efter operation, så det påvirker alle rækker i medarbejdertabellen.

Forklar forskellen mellem TRUNCATE, DROP og DELETE operationer i SQL

afkorte

TRUNCATE-operationen fjerner alle rækker fra en tabel, men den påvirker ikke tabellens struktur. Det er hurtigere end DELETE, fordi det ikke genererer nogen fortryd- eller fortryd-logfiler og udløser ingen sletnings-triggere.

Her er et eksempel på brug af TRUNCATE-sætningen

TRUNCATE TABLE employees;

 

Denne erklæring fjerner alle rækker fra medarbejdertabellen, men tabelstrukturen, inklusive kolonnenavne og datatyper, forbliver uændret.

DROP

DROP-operationen fjerner en tabel fra databasen og fjerner alle data i tabellen. Det fjerner også alle indekser, triggere og begrænsninger forbundet med tabellen.

Her er et eksempel på brug af DROP-sætningen

DROP TABLE employees;

 

Denne erklæring fjerner medarbejdertabellen fra databasen, og alle data i tabellen slettes permanent. Bordstrukturen er også fjernet.

SLET

Operationen DELETE fjerner en eller flere rækker fra en tabel. Det giver dig mulighed for at angive en WHERE-klausul for at vælge de rækker, der skal slettes. Det genererer også logfiler for fortryd og fortryd, og udløser annullering af triggere.

Her er et eksempel på brug af DELETE-sætningen

DELETE FROM employees WHERE salary & lt;
50000;

 

Denne erklæring fjerner alle rækker fra medarbejdertabellen, hvor lønnen er mindre end 50000. Tabelstrukturen forbliver uændret, og de slettede rækker kan gendannes ved hjælp af fortryd-logfilerne.

Hvad er mere effektivt joinforbindelse eller underforespørgsel?

Det er generelt mere effektivt at bruge en JOIN i stedet for en underforespørgsel, når du kombinerer data fra flere tabeller. Dette skyldes, at en JOIN tillader databasen at udføre forespørgslen mere effektivt ved at bruge indekser på de sammenføjede tabeller.

Overvej f.eks. følgende to forespørgsler, der returnerer de samme resultater:

SELECT * FROM orders o WHERE o.customer_id IN ( SELECT customer_id FROM customers WHERE country = 'US' );

 

SELECT * FROM orders o WHERE o.customer_id IN ( SELECT customer_id FROM customers WHERE country = 'US' );

 

Den første forespørgsel bruger en JOIN til at kombinere ordre- og kundetabellerne og filtrerer derefter resultaterne ved hjælp af en WHERE-klausul. Den anden forespørgsel bruger en underforespørgsel til at vælge de relevante kunde-id'er fra kundetabellen og bruger derefter IN-operatøren til at filtrere ordretabellen baseret på disse ID'er.

Hvordan bruger du vinduesfunktioner i SQL?

I SQL er en vinduesfunktion en funktion, der fungerer på et sæt rækker, eller et "vindue", defineret af en vinduesspecifikation. Vinduesfunktioner bruges til at udføre beregninger på tværs af rækker, og de kan bruges i SELECT-, UPDATE- og DELETE-sætninger såvel som i WHERE- og HAVING-sætningerne i en SELECT-sætning.

Her er et eksempel på brug af en vinduesfunktion i en SELECT-sætning:

SELECT name, salary, AVG(salary) OVER (PARTITION BY department_id) as avg_salary_by_department FROM employees

 

Denne erklæring returnerer et resultatsæt med tre kolonner: navn, løn og gennemsnitsløn_efter_afdeling. Kolonnen avg_salary_by_department beregnes ved hjælp af AVG-vinduefunktionen, som beregner gennemsnitslønnen for hver afdeling. PARTITION BY-klausulen angiver, at vinduet er opdelt efter afdelings-id, hvilket betyder, at den gennemsnitlige løn beregnes separat for hver afdeling.

Forklar normalisering

Normalisering er processen med at organisere en database på en måde, der reducerer redundans og afhængighed. Det er en systematisk tilgang til at dekomponere tabeller for at eliminere dataredundans og forbedre dataintegriteten. Der er flere normale former, der kan bruges til at normalisere en database. De mest almindelige normale former er:

Første normale form (1NF)         

  • Hver celle i tabellen indeholder en enkelt værdi og ikke en liste over værdier
  • Hver kolonne i tabellen har et unikt navn
  • Tabellen indeholder ingen gentagne grupper af kolonner

Anden normal form (2NF)

  • Det er i første normal form
  • Den har ingen delvise afhængigheder (det vil sige, at en ikke-primær attribut er afhængig af en del af en sammensat primær nøgle)

Tredje normale form (3NF)

  • Det er i anden normal form
  • Den har ingen transitive afhængigheder (det vil sige, at en ikke-primær egenskab er afhængig af en anden ikke-primær egenskab)

Boyce-Codd normal form (BCNF)

  • Det er i tredje normalform
  • Hver determinant (en egenskab, der bestemmer værdien af ​​en anden egenskab) er en kandidatnøgle (en kolonne eller et sæt af kolonner, der kan bruges som en primær nøgle)

Forklar Exclusive Lock og Update Lock i SQL

En eksklusiv lås er en lås, der forhindrer andre transaktioner i at læse eller skrive til de låste rækker. Denne type lås bruges typisk, når en transaktion skal ændre dataene i en tabel, og den ønsker at sikre, at ingen andre transaktioner kan få adgang til tabellen på samme tid.

En opdateringslås er en lås, der tillader andre transaktioner at læse de låste rækker, men den forhindrer dem i at opdatere eller skrive til de låste rækker. Denne type lås bruges typisk, når en transaktion skal læse dataene i en tabel, men den ønsker at sikre, at dataene ikke ændres af andre transaktioner, før den aktuelle transaktion er afsluttet.
 
 
Sonia Jamil er i øjeblikket ansat som databaseanalytiker hos et af Pakistans største teleselskaber. Udover sit fuldtidsarbejde arbejder hun også som freelancer. Hendes baggrund omfatter ekspertise inden for databaseadministration og erfaring med både on-premises og cloud-baserede SQL Server-miljøer. Hun er dygtig til de nyeste SQL Server-teknologier og har en stærk interesse for datastyring og dataanalyse.
 

Tidsstempel:

Mere fra KDnuggets