Dlaczego funkcje analityczne poprawiają wydajność zapytań SQL?

  Рет қаралды 3,505

nieinformatyk

nieinformatyk

Күн бұрын

✅Czy wiesz czym różnią się funkcje analityczne(funkcje okienkowe) od funkcji agregujących/grupujących(GROUP BY)? Te pierwsze nie tylko pozwalają nam na wyliczanie zagregowanych wartości bez grupowania rekordów. Są również świetną metodą optymalizacji zapytań SQL. Dlaczego? Zapraszam do odcinka po szczegóły.
🎁 ODBIERZ PREZENTY
1) Książka o tym, jak się przebranżowić na bazodanowca: promo.podstawybazdanych.pl/
2) Lista najczęstszych błędach programistów PL/SQL: promo.plsql.pl/
== 🔗 Przydatne linki z nagrania:==
📥kod z lekcji do pobrania: drive.google.com/file/d/1RMjW...
🏷️Łączenie tabel w SQL: • Łączenie tabel SQL, cz...
🏷️Funkcje agregujące: • Kurs SQL 10: Grupowani...
🏷️Funkcje analityczne: • Kurs SQL 22: Funkcje a...
== 👌 Polecam obejrzeć:==
1. Ścieżki dostępu do danych w SQL: • Jak przyśpieszyć zapyt...
2. Co to jest widok SQL? • Czym są widoki w sql? #64
== ⏱️ Plan odcinka:==
00:00 wprowadzenie do odcinka
01:05 funkcja agregująca vs funkcja analityczna
02:29 wykonanie skryptu SQL (DDL)
03:25 przykład 1
10:04 przykład 2
13:26 funkcja agregująca vs analityczna - porównanie
#bazodanowiec
== 👨‍💻 Poznaj mniej lepiej:==
* Moja strona: www.nieinformatyk.pl/
* Facebook: / nieinformatyk
* Linkedin: / darekbutkiewicz
* Instagram: / nieinformatyk
* Twitter: / nieinformatyk
Zasubskrybuj mój kanał: kzfaq.info...
🏁 Witaj na moim kanale :)
Jestem programistą baz danych Oracle oraz developerem hurtownii danych (ETL). W tym miejscu dzielę się z oglądającymi wiedzą dotyczącą relacyjnych baz danych, praktycznych technik pisania SQL oraz optymalizacji kodu PL/SQL. Jeśli chcesz zdobyć praktyczną i rzetelną więdzę o bazach danych to trafiłeś na właściwe miejsce.
🚨 Więcej informacji o bazach danych znajdziesz na www.nieinformatyk.pl
📧 Masz pytanie, prośbę, sugestię? Pisz śmiało na kontakt@nieinformatyk.pl

Пікірлер: 44
@coTyNiePowiesz
@coTyNiePowiesz Жыл бұрын
👍dziękuję Darku za możliwość nauki.
@nieinformatyk
@nieinformatyk Жыл бұрын
proszę Cię bardzo :)
@marcinn7518
@marcinn7518 5 ай бұрын
Dzięki za ten film
@nieinformatyk
@nieinformatyk 5 ай бұрын
A ja dziękuję za komentarz :)
@Stanislaw_Nowak
@Stanislaw_Nowak Жыл бұрын
Można praktycznie nigdy nie grupować, i używać funkcji analitycznych z 'SELECT DISTINCT'. Np. 'SELECT DISTINCT departament_id, ROUND(AVG(salary) OVER (PARTITION BY departament_id), 2) AS avg_sal FROM pracownicy'. Wyjątkiem jest STRING_AGG (LIST_AGG), która nie działa jako funkcja anlityczna.
@nieinformatyk
@nieinformatyk Жыл бұрын
DISTINCT to funkcja grupująca :)
@Stanislaw_Nowak
@Stanislaw_Nowak Жыл бұрын
A ja mam zagadke, jak przerobic poniższy kod by laczyc sie raz z tabela y. Mi sie to udalo, ale wydajnosc spadla i nie wiem czemu. Select X.id, A.data as a_data, B.data as b_data, C.data as c_data From X Outer apply (Select top 1 data From y Where y.id=x.id and typ='a' Order by data desc) as a Outer apply (Select top 1 data From y Where y.id=x.id and typ='b' Order by data desc) as b Outer apply (Select top 1 data From y Where y.id=x.id and typ='c' Order by data desc) as c
@nieinformatyk
@nieinformatyk Жыл бұрын
o coś takiego chodziło? WITH q1 AS ( SELECT x.typ , x.data , ROW_NUMBER() OVER (PARTITION BY x.typ ORDER BY x.data DESC) AS lp FROM x LEFT JOIN y ON y.id=x.id WHERE x.typ IN ('a', 'b', 'c') ) SELECT x.id , CASE WHEN x.typ = 'a' THEN x.data ELSE NULL END as a_data , CASE WHEN x.typ = 'b' THEN x.data ELSE NULL END as b_data , CASE WHEN x.typ = 'c' THEN x.data ELSE NULL END as c_data FROM q1 WHERE lp = 1 ;
@Stanislaw_Nowak
@Stanislaw_Nowak Жыл бұрын
@@nieinformatyk trochę wprowadziłem w błąd nie dając aliasów, chodziło o : Select x.id, a.data as a_data, b.data as b_data, c.data as c_data From x Outer apply (Select top 1 y.data From y Where y.id=x.id and y.typ='a' Order by y.data desc) as a Outer apply (Select top 1 y.data From y Where y.id=x.id and y.typ='b' Order by y.data desc) as b Outer apply (Select top 1 y.data From y Where y.id=x.id and y.typ='c' Order by y.data desc) as c
@nieinformatyk
@nieinformatyk Жыл бұрын
@@Stanislaw_Nowak nie testowałem kodu, ale wydaje mi się, że moje rozwiązanie wyżej powinno działać, sprawdzałeś? Coś przeoczyłem?
@Stanislaw_Nowak
@Stanislaw_Nowak Жыл бұрын
Dajesz x.typ, a typ jest w tabeli y
@nieinformatyk
@nieinformatyk Жыл бұрын
@@Stanislaw_Nowak to zamień x.typ na y.typ - to pseudokod(literówki mogą tam być) :) Konceptualnie wygląda na te same polecenie.
@KS2416
@KS2416 Жыл бұрын
Witam. Używam my SQL Workbrench i w ogóle nie mam funkcji okienkowych. Jak wpisuje traktuje jako zwykły tekst. Ktoś wie cosie dzieje?
@nieinformatyk
@nieinformatyk Жыл бұрын
Coś kłamiesz :) w Mysql funkcje analityczne działają tak jak w Oracle i innych RDBMS: dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html
@KS2416
@KS2416 Жыл бұрын
@@nieinformatyk No ale mi nie działają. Row_number, over itd.
@nieinformatyk
@nieinformatyk Жыл бұрын
@@KS2416 pokaż komunikat błędu
@KS2416
@KS2416 Жыл бұрын
@@nieinformatyk Poakzuje mi syntax error, ale mi workbrench nie uznaje w ogóle tego za funkcje. Nie zmienia koloru itd. Nie wiem, może coś w ustawieniach muszę zmienić?
@KS2416
@KS2416 Жыл бұрын
@@nieinformatyk Podobnie mam z except, intersept i funkcją datediff
@darthmichau878
@darthmichau878 8 ай бұрын
@TomaszTomzik
@TomaszTomzik Жыл бұрын
No ale jak będziesz miał kilka osób z tą samą stawką i będzie to stawka minimalna, to opcja zrobienia za pomocą RANK nie zadziała, bo też zwróci tylko jednego pracownika.
@nieinformatyk
@nieinformatyk Жыл бұрын
Dlaczego? RANK dla kilku rekordów przypisze wartość 1. Chyba pomyliłeś RANK z ROW_NUMBER :)
@TomaszTomzik
@TomaszTomzik Жыл бұрын
@@nieinformatyk a to pomyliłem faktycznie, sory złote jęzory... To przecież RANK!
@biohacker5815
@biohacker5815 Жыл бұрын
Można zostać programistą bez informatycznego wykształcenia?
@nieinformatyk
@nieinformatyk Жыл бұрын
pewnie :)
@tomnap2328
@tomnap2328 Жыл бұрын
Można. Ja zostałem w wieku 40 lat. Na rozmowie miałem pytanie, które było omawiane na tym kanale:)
@imomaikel
@imomaikel Жыл бұрын
nie chcesz może opowiedzieć jak wyglądały studia na wacie?
@nieinformatyk
@nieinformatyk Жыл бұрын
studiowałem zarządzanie, więc nie sądzę by Cię to interesowało :) fajni ludzie, fajne akademiki, dobre imprezy na kampusie :)
@TomaszTomzik
@TomaszTomzik Жыл бұрын
Boli mnie często, że niestety w SQLach nie można odwoływać się do wyliczonych kolumn w tym samym selekcie (na tym samym poziomie), np. po aliasie... trzeba robić podzapytania, jak się pytam CZEMU?:D . Np: select id_pracownika, netto * 1.23 as brutto, brutto + nagroda as brutto_z_nagroda from PLACE.
@Arogancky
@Arogancky Жыл бұрын
eee select 1+1 as wynik ,wynik/2 as wynik2 ,wynik+wynik2 as wynik3 działa, przynajmniej w snowflake, SQLServera mi sie nie chce odpalać nawet
@nieinformatyk
@nieinformatyk Жыл бұрын
@@Arogancky w Oracle nie zadziała :) Sql Server raczej też
@TomaszTomzik
@TomaszTomzik Жыл бұрын
@@Arogancky nie ma czegoś takiego w ORACLE.... ani MSSQL
@Arogancky
@Arogancky Жыл бұрын
@@nieinformatyk a, to dlatego nie lubiłem tych systemów :D
@TomaszTomzik
@TomaszTomzik Жыл бұрын
Zrobiłeś już serię odcinków o przykładowych zastosowaniach wszystkich funkcji analitycznych? (tfu. co za nazwa)
@nieinformatyk
@nieinformatyk Жыл бұрын
Nie, nie nagrywałem takiego odcinka. Tfu? Jaką nazwę preferujesz?
@TomaszTomzik
@TomaszTomzik Жыл бұрын
@@nieinformatyk bez "anal" ;)
@jankowalszczak2689
@jankowalszczak2689 Жыл бұрын
merytorycznie ok ale proszę mniej klikania, odklikiwania zaznaczania bez sensu. wszyscy widzą a tylko rozprasza i drażni. w każdym filmie to samo - taka trochę droga przez mękę aby dooglądać do końca.
@nieinformatyk
@nieinformatyk Жыл бұрын
Dzięki za komentarz :) To pierwsza sugestia tego typu i nie wiem czy innym nie chciało się komentować czy może tylko Tobie to przeszkadza. Osobiście wydaje mi się, że jak ktoś nie zna SQL to zaznaczenie fragmentu kodu myszką ułatwia jego zrozumienie, bo wiadomo o której z linijek rozmawiamy.
@TomaszTomzik
@TomaszTomzik Жыл бұрын
Kobiety i Mężczyźni? ojoj... nie narazisz się tym ludziom "od alfabetu" za tak wąskie potraktowanie płci? :)
@nieinformatyk
@nieinformatyk Жыл бұрын
Może poza Tobą nikt nie zauważy :)
@TomaszTomzik
@TomaszTomzik Жыл бұрын
@@nieinformatyk oj zdziwiłbyś się przy meinstreamowych zasięgach...
Dlaczego indeks przyśpiesza wykonywanie zapytań SQL?
17:48
nieinformatyk
Рет қаралды 4,1 М.
DAD LEFT HIS OLD SOCKS ON THE COUCH…😱😂
00:24
JULI_PROETO
Рет қаралды 15 МЛН
100❤️
00:19
MY💝No War🤝
Рет қаралды 23 МЛН
Amazing weight loss transformation !! 😱😱
00:24
Tibo InShape
Рет қаралды 53 МЛН
Rodzaje indeksów w bazie danych Oracle
19:58
nieinformatyk
Рет қаралды 3,3 М.
Grupowanie danych w SQL, czyli GROUP BY i funkcje agregujące
14:40
nieinformatyk
Рет қаралды 2,3 М.
SQL Window Functions in 10 Minutes
10:13
Colt Steele
Рет қаралды 66 М.
Jak przyśpieszyć zapytanie SQL, czyli ścieżki dostępu do danych
22:59
Poziomy izolacji sql - wyjaśnienie dla laika + przykłady
27:36
nieinformatyk
Рет қаралды 3,7 М.
Podzapytania SQL - podstawy z przykładami
13:28
nieinformatyk
Рет қаралды 1,7 М.
[SQL Analityczny] Funkcje analityczne i funkcje okna - OVER ()
6:09
$1 vs $100,000 Slow Motion Camera!
0:44
Hafu Go
Рет қаралды 27 МЛН
Kumanda İle Bilgisayarı Yönetmek #shorts
0:29
Osman Kabadayı
Рет қаралды 1,2 МЛН