Ostatnio dokonałem rekonesansu w kwestii pytań na “technicznej” części rozmowy rekrutacyjnej na stanowisko DE, DS, DA i ogólnie innych ról powiązanych z Big Data. Zaskoczeniem był fakt, że na rozmowach w polsce i za granicą mozemy zostać zapytani bardzo czesto o to samo! Naprawdę wiele pytań się powtarza i różnią się tylko treśćią samego pytania albo kontekstem natomiast sens pytania jest zasadniczo zachowany. Oczywiście lista zawiera pytania z jakimi zmieżyli się prawdziwi a nie wirtualni kandydaci. Poniżej lista (ciagle rozwijana!) pytań wraz z jednoznadniowymi odpowiedziami”

  • Jakie są rodzaje JOIN w SQL?
  • Co to jest NULL i jak go używać w SQL?
  • Jak usunąć duplikaty z tabeli SQL?
  • Jak usunąć duplikaty, ale pozostawić jeden wiersz?
  • Jak napisać zapytanie, które zwraca produkty o sumarycznej kwocie sprzedaży powyżej x w roku danym roku?
  • Czym różni się DELETE od TRUNCATE?
  • Co to jest CTE (Common Table Expression) i jak działa?
  • Jak w zwykłym zapytaniu SQL użyć zmiennej?
  • Czym różni się UNION od UNION ALL?
  • Jak działa LEFT JOIN?Co to jest Dynamic SQL (dyn SQL)?
  • Co to jest kursor w SQL i kiedy należy go używać?
  • Jakie są metody optymalizacji zapytań SQL poza użyciem kursora?
  • Jakie narzędzia AWS wspierają ETL?
  • Jak działa Amazon Redshift i jak się różni od PostgreSQL?

Rodzaje JOIN w SQL:

  • INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, CROSS JOIN.

NULL:

  • Brak wartości w kolumnie, oznacza nieokreślone dane.

Usunięcie duplikatów z tabeli SQL:

  • Użyj DISTINCT w zapytaniu: SELECT DISTINCT * FROM table;.

Usunięcie duplikatów, pozostawiając jeden wiersz:

  • Możesz użyć ROW_NUMBER() i usunąć wiersze z numerem większym niż 1
    • DELETE FROM table WHERE id NOT IN (SELECT MIN(id) FROM table GROUP BY col1, col2);

Zapytanie dla sprzedaży powyżej x zł w danym roku:

SELECT ProductID, ProductName, SUM(Amount) AS TotalAmount
FROM Staging.Sales
WHERE DATEPART(YEAR, SaleDate) = 2023
GROUP BY ProductID, ProductName
HAVING SUM(Amount) > <value>;

Różnica między DELETE a TRUNCATE:

  • DELETE usuwa wiersze z tabeli z możliwością cofnięcia, TRUNCATE usuwa wszystkie wiersze bez możliwości cofnięcia (szybsze).

CTE (Common Table Expression):

  • Tymczasowy wynik zapytania, używany w dalszej części głównego zapytania.

Użycie zmiennej w zwykłym zapytaniu SQL:

  • W PostgreSQL można użyć CTE lub zmiennych sesyjnych: SET my_var = 100;.

Różnica między UNION a UNION ALL:

  • UNION usuwa duplikaty, UNION ALL zwraca wszystkie wiersze, w tym duplikaty.

LEFT JOIN:

  • Zwraca wszystkie wiersze z lewej tabeli oraz dopasowane wiersze z prawej, jeśli brak dopasowania, wartości z prawej tabeli będą NULL.

Dynamic SQL:

  • SQL generowany i wykonywany w czasie rzeczywistym w aplikacjach lub w blokach PL/pgSQL.

Kursor w SQL:

  • Mechanizm pozwalający na iterację po wynikach zapytania, wiersz po wierszu.

Optymalizacja zapytań SQL poza użyciem kursora:

  • Indeksy, ograniczenie ilości danych, optymalizacja JOIN, zapytania zbiorowe, zamiast kursorów.

Narzędzia AWS do ETL:

  • AWS Glue, Amazon EMR, AWS Data Pipeline, AWS Lambda, Amazon Redshift.

Amazon Redshift vs PostgreSQL:

  • Redshift: kolumnowa hurtownia danych, zoptymalizowana pod OLAP i Big Data. PostgreSQL: uniwersalna relacyjna baza danych, bardziej odpowiednia do OLTP i mniejszych aplikacji.
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments