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, iż 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żeli 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.