Mój autorski kurs SQL: kajodata.com/kursy/kurs-sql-dla-poczatkujacych/ ✅ Ponad 6 godzin nagrań ✅ 2 różne wersje SQL: MySQL i PostgreSQL ✅ Certyfikat po ukończeniu w 2 wersjach językowych ( PL / EN ) ✅ Ćwiczenia, dane do pobrania, dostęp do aktualizowanej bazy wiedzy ✅ Gwarancja satysfakcji
Można użyć tabel tymczasowych - ja po prostu wolę ogarnąć wszystko jedną kwerendą jeśli jest to możliwe. Z moich doświadczeń wynika, że CTE sa generalnie trochę szybsze, ale to zależy od use case'a.
kilka uwag do zadania 1: 1. widok 'months' nic nie wnosi, można by widoki 'first_class' i 'second_class' łączyć full outer joinem. Ale niestety w MySQL nie ma full outer joina :/. 2. gdyby w jakimś miesiącu było 0 sprzedaży first_class, a np. była sprzedaż second_class, to by wyszedł nieładny null, zatem warto zamieniać nulle na zera. 3. Gdyby w jakimś miesiącu nic nie było, to nie pojawi się rekord, przykładowo w 2013-04 nie było sprzedaży, to będą rekordy dla 2013-03 a potem dla 2013-05. Ja bym wolał mieć rekord z 2013-04 z zerami. Uwagi do zadania 2: 1. Zamiast robić left joina po whatever, prościej będzie zrobić crossjoin (iloczyn kartezjański) 2. można robić select bez From (w sQL SERVER 'SELECT 1' zadziała, w oracle i mysql trzeba podać dummy table): SELECT (SELECT best_sales FROM fc_Best_month) as fc_best_sales, (SELECT best_sales FROM sc_Best_month) as sc_best_sales From DUAL
Z większością uwag się zgadzam, że można to dodać. Natomiast zależało mi na stosunkowo niewielkiej ilości funkcji. Mam takie osobiste odczucie, że left join jest intuicyjnie lepiej rozumiany niż cross join. Moim celem było skupić się na podstawach CTE :) Natomiast dziś chyba rzeczywiście lepiej bym to dopracował 🙂
Polecam zgłębić temat mojej 3ciej uwagi do 1 zadania. Można dzięki temu nauczyć się recursion cte - zapytania sql pisane rekurencyjnie. Na początek ćwiczenie: zrobić tabelę z 1 kolumną, z liczbami od 1 do 1000 w kolejnych wierszach.
Mój autorski kurs SQL: kajodata.com/kursy/kurs-sql-dla-poczatkujacych/
✅ Ponad 6 godzin nagrań
✅ 2 różne wersje SQL: MySQL i PostgreSQL
✅ Certyfikat po ukończeniu w 2 wersjach językowych ( PL / EN )
✅ Ćwiczenia, dane do pobrania, dostęp do aktualizowanej bazy wiedzy
✅ Gwarancja satysfakcji
Hej, dopiero się uczę SQL i nasuwa mi się jedno pytanie:
Czy można by i czy opłacalne by było użycie tutaj temporary tabels?
Można użyć tabel tymczasowych - ja po prostu wolę ogarnąć wszystko jedną kwerendą jeśli jest to możliwe. Z moich doświadczeń wynika, że CTE sa generalnie trochę szybsze, ale to zależy od use case'a.
@@kajodata Rozumień, dziękuję za odpowiedź ;)
link do githuba wygasł :(
kajodata.com/cwiczenia-z-sql/
kilka uwag do zadania 1:
1. widok 'months' nic nie wnosi, można by widoki 'first_class' i 'second_class' łączyć full outer joinem. Ale niestety w MySQL nie ma full outer joina :/.
2. gdyby w jakimś miesiącu było 0 sprzedaży first_class, a np. była sprzedaż second_class, to by wyszedł nieładny null, zatem warto zamieniać nulle na zera.
3. Gdyby w jakimś miesiącu nic nie było, to nie pojawi się rekord, przykładowo w 2013-04 nie było sprzedaży, to będą rekordy dla 2013-03 a potem dla 2013-05. Ja bym wolał mieć rekord z 2013-04 z zerami.
Uwagi do zadania 2:
1. Zamiast robić left joina po whatever, prościej będzie zrobić crossjoin (iloczyn kartezjański)
2. można robić select bez From (w sQL SERVER 'SELECT 1' zadziała, w oracle i mysql trzeba podać dummy table):
SELECT
(SELECT best_sales FROM fc_Best_month) as fc_best_sales,
(SELECT best_sales FROM sc_Best_month) as sc_best_sales
From DUAL
Z większością uwag się zgadzam, że można to dodać. Natomiast zależało mi na stosunkowo niewielkiej ilości funkcji.
Mam takie osobiste odczucie, że left join jest intuicyjnie lepiej rozumiany niż cross join.
Moim celem było skupić się na podstawach CTE :) Natomiast dziś chyba rzeczywiście lepiej bym to dopracował 🙂
Polecam zgłębić temat mojej 3ciej uwagi do 1 zadania. Można dzięki temu nauczyć się recursion cte - zapytania sql pisane rekurencyjnie. Na początek ćwiczenie: zrobić tabelę z 1 kolumną, z liczbami od 1 do 1000 w kolejnych wierszach.
Zapytania rekurencyjne to spokojnie materiał na osobny filmik :)