SQL WITH | co to jest CTE | Common Table Expressions | Full Tutorial

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 10

  • @kajodata
    @kajodata  Рік тому

    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

  • @xmikaz
    @xmikaz Рік тому +2

    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?

    • @kajodata
      @kajodata  Рік тому +1

      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.

    • @xmikaz
      @xmikaz Рік тому

      @@kajodata Rozumień, dziękuję za odpowiedź ;)

  • @nanys2222
    @nanys2222 Рік тому

    link do githuba wygasł :(

    • @kajodata
      @kajodata  Рік тому

      kajodata.com/cwiczenia-z-sql/

  • @Stanislaw_Nowak
    @Stanislaw_Nowak 3 роки тому +1

    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

    • @kajodata
      @kajodata  3 роки тому

      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ł 🙂

    • @Stanislaw_Nowak
      @Stanislaw_Nowak 3 роки тому +2

      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.

    • @kajodata
      @kajodata  3 роки тому +1

      Zapytania rekurencyjne to spokojnie materiał na osobny filmik :)