Przydatne sztuczki - sql. Na przykładzie postgres a.



Podobne dokumenty
SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Funkcje. Rozdział 3a Funkcje wierszowe. Funkcje znakowe (1) Funkcje wierszowe

Język SQL. Rozdział 3. Funkcje wierszowe

Systemy GIS Tworzenie zapytań w bazach danych

Język SQL. Rozdział 3. Zaawansowana selekcja danych

PL/SQL. Funkcje wbudowane

Funkcje. Rozdział 3. Funkcje. Funkcje znakowe (1) Funkcje wierszowe

Relacyjne bazy danych. Podstawy SQL

Bloki anonimowe w PL/SQL

Ref. 7 - Język SQL - polecenia DDL i DML

Wykład 5. SQL praca z tabelami 2

SQL (ang. Structured Query Language)

Wybór wszystkich danych: SELECT * FROM employee Wybór określonych kolumn lub wyrażeń: SELECT first_name, last_name, salary FROM employee

a) Polecenie: Wyświetl wszystkie rekordy z tabeli Pracownicy (wszystkie atrybuty)

Przestrzenne bazy danych Podstawy języka SQL

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Zaawansowany SQL. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Bazy danych SQL Server 2005

Relacyjne bazy danych. Podstawy SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

LAB 3 (część 1 Projektu)

- język zapytań służący do zapisywania wyrażeń relacji, modyfikacji relacji, tworzenia relacji

Język SQL podstawy zapytań

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Bazy danych 7/15. Andrzej Łachwa, UJ,

Map Reduce Proste zliczanie słów i zapytania SQL

Wykład 05 Bazy danych

Autor: Joanna Karwowska

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

EGZAMIN MATURALNY OD ROKU SZKOLNEGO

Autor: Joanna Karwowska

Wprowadzenie do języka SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Temporalne bazy danych

Oracle11g: Wprowadzenie do SQL

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Język SQL, zajęcia nr 1

SIECI KOMPUTEROWE I BAZY DANYCH

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Bazy danych. Andrzej Łachwa, UJ, /14

Język SQL. Rozdział 2. Proste zapytania

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

Część 1: OLAP. Raport z zajęć laboratoryjnych w ramach przedmiotu Hurtownie i eksploracja danych

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Jerzy Nawrocki, Wprowadzenie do informatyki

Przykładowa baza danych BIBLIOTEKA

SQL w praktyce. Miłej i owocnej nauki!!!

Bazy danych Język SQL część 1 Wykład dla studentów matem

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Bazy danych 7. SQL podstawy

Język SQL, zajęcia nr 2

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wykład 4. SQL praca z tabelami 1

Bazy danych wykład trzeci. Konrad Zdanowski

SQL do zaawansowanych analiz danych część 1.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Struktura drzewa w MySQL. Michał Tyszczenko

Hurtownia Świętego Mikołaja projekt bazy danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Indeksowanie w bazach danych

Współczesne systemy baz danych

SQL - Structured Query Language. strukturalny język zapytań

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

SQL :: Data Definition Language

Kiedy i czy konieczne?

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski

Klasyczna Analiza Danych

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

1 Obsługiwane funkcje wyzwalaczy

Współczesne systemy baz danych

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Zarzadzanie transakcjami. Transakcje

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

BAZA DANYCH SIECI HOTELI

Oracle PL/SQL. Paweł Rajba.

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

Wykład 6. SQL praca z tabelami 3

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

osiągnął długość podaną jako drugi parametr. Jeśli wynik jest dłuższy niż zadeklarowana długość, zostaje ucięty z prawej strony.

Paweł Rajba

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Funkcje agregujące i ciąg dalszy SQL

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Widok Connections po utworzeniu połączenia. Obszar roboczy

Model relacyjny. Wykład II

Transkrypt:

Przydatne sztuczki - sql. Na przykładzie postgres a. M. Wiewiórko 05/2014

Plan Uwagi wstępne Przykład Rozwiązanie Tabela testowa Plan prezentacji: Kilka uwag wstępnych. Operacje na typach tekstowych. Korzystanie z funkcji oknowych (window functions)... Tworzenie funkcji użytkownika.

Uwagi wstępne: Uwagi wstępne Przykład Rozwiązanie Tabela testowa Aby sprawnie posługiwać się sql em trzeba dobrze rozumieć zasady jego działania. Sprowadza się to do tego, że zawsze warto sprawdzić czy nasze myślenie jest zbieżne z działaniem sql a;)

Przykład Uwagi wstępne Przykład Rozwiązanie Tabela testowa Problem: Otrzymaliśmy dane (w formie tekstowej). Jedną z kolumn należy przetransformować na typ date. Niestety data jest zapisana w 3 różnych formatach - i nie wszystkie są akceptowane przez postgres a. Formaty daty: yyyy-mm-dd lub yyyymmdd - domyślnie akceptowany przez postgres a dd-mm-yyyy - nie akceptowany przez postgres a

Rozwiązanie Uwagi wstępne Przykład Rozwiązanie Tabela testowa select case when d_zdarzenia ~* [0-9]{4} -[0-9]{1,2} -[0-9]{1,2} or d_zdarzenia ~* [0-9]{8} then d_zdarzenia :: date when dzdarzenia ~* [0-9]{2} -[0-9]{2} -[0-9]{4} then ( substring ( d_zdarzenia from 7 for 4) substring ( d_zdarzenia from 4 for 2) substring ( d_zdarzenia from 1 for 2)):: date else null end from ( select 2011-11 -01 :: text as d_zdarzenia ) a; W prosty sposób sprawdzamy przekształcenie dla konkretnej wartości którą sami podajemy. Wstawiając argument 2011-11-01 lub 20111101 dostaniemy datę 2011-11-01. Podając 20-11-1101 otrzymamy datę 1101-11-20.

Tabela testowa Uwagi wstępne Przykład Rozwiązanie Tabela testowa Stworzenie tabeli: create table tmp_tabela_testowa as select id_platnosc, ( random ()*10000):: numeric (15,2) as kwota, ceil ( random ()*100) id_podmiot, current_date + ceil (( random () -0.5)*300):: int as d_tranzakacji from generate_series (1,3000) id_platnosc ; Będziemy się posługiwać powyższą tabelą do zobrazowania kilku przykładów.

Łączenie łańcuchów znaków (konkatenacja) -- przykład 1: select aaa bbbb ; lub select concat ( aaa, bbbb ); -- przykład 2: select aaa null ; lub select concat ( aaa,null ); Wynik to: Przykład 1: aaabbbb (oba przypadki) Przykład 2: null (dla ) oraz aaa (dla concat). Funkcja concat ignoruje null e!!!

Najważniejsze funkcje: length,translate,substring,position, reverse,replace,lower,upper...

substring Standardowe działanie - wyciąga określoną ilość znaków od określonego miejsca: -- przykład 1: select substring ( asdfghjk from 2 for 5); -- Wynik : sdfgh Niestandardowe działanie - wyciąga określony wzorzec z łańcucha znaków: -- przykład 2: select substring ( asdf2000-09 -11 ghjk from [0-9]{4} -[0-9]{1,2} -[0-9]{1,2} ); -- Wynik : 2000-09 -11

Co to jest?: są to funkcje które przeprowadzają obliczenia na pewnym zbiorze wierszy które są w pewnej relacji z bieżącym wierszem. Między innymi mogą to być wszystkie funkcje agregujące. Składnia - przykład: select *, sum ( kwota ) over ( partition by id_podmiot ) suma_wplat, avg ( kwota ) over ( partition by id_podmiot ) srednia_wplata, row_number () over ( partition by id_podmiot order by d_tranzakacji desc ) as kolejnosc_od_najnowszej from tmp_tabela_testowa ;

Wynik:

Przykład: Chcemy widzieć 3 ostatnie wpłaty danego podmiotu. Rozwiązanie: Mając dodaną do tabeli kolejność możemy zastosować następujące zapytanie: select id_podmiot, sum ( case when order_najnowsza =1 then kwota else null end ) wplat_1, sum ( case when order_najnowsza =2 then kwota else null end ) wplat_2, sum ( case when order_najnowsza =3 then kwota else null end ) wplat_3 from tmp_tabela_testowa group by 1 order by 1;

Wynik:

Operacja: select date 2001-09 -28 + integer 7 ; select date 2001-09 -28 + interval 1 hour ; select date 2001-09 -28 + time 03:00 ; select interval 1 day + interval 1 hour ; select timestamp 2001-09 -28 01:00 + interval 23 hours ; select time 01:00 + interval 3 hours ; select - interval 23 hours ; select date 2001-10 -01 - date 2001-09 -28 ; select date 2001-10 -01 - integer 7 ; select date 2001-09 -28 - interval 1 hour ; select time 05:00 - time 03:00 ; select time 05:00 - interval 2 hours ; select timestamp 2001-09 -28 23:00 - interval 23 hours ; select interval 1 day - interval 1 hour ; select timestamp 2001-09 -29 03:00 - timestamp 2001-09 -27 12:00 ; select 900 * interval 1 second ; select 21 * interval 1 day ; select double precision 3.5 * interval 1 hour ; select interval 1 hour / double precision 1.5 ; Wynik: date 2001-10 -05 timestamp 2001-09 -28 01:00:00 timestamp 2001-09 -28 03:00:00 interval 1 day 01:00:00 timestamp 2001-09 -29 00:00:00 time 04:00:00 interval -23:00:00 integer 3 ( days ) date 2001-09 -24 timestamp 2001-09 -27 23:00:00 interval 02:00:00 time 03:00:00 timestamp 2001-09 -28 00:00:00 interval 1 day -01:00:00 interval 1 day 15:00:00 interval 00:15:00 interval 21 days interval 03:30:00 interval 00:40:00

Przykład Problem: Trzeba przygotować harmonogram spłat rat kredytu. Wiadomo ile klient ma zapłacić rat oraz kiedy ma nastąpić pierwsza płatność. Rozwiązanie: select nr_raty +1 as nr_raty, ( d_p_rata +( nr_raty month ):: interval ):: date data_raty from ( select 10 as l_rat, 2013-01 -30 :: date as d_p_rata ) a join generate_series (0,500) nr_raty on nr_raty <a. l_rat ;

Przykład Wynik:

Przydatne funkcje: to char - przekształca datę na tekst wg. wybranej konwencji. EXTRACT - wyciąga ze zmiennej czasowej wybrany fragment (dzień/miesiąc/godzinę ect.) Przykładowo: select to_char ( 2013-01 -12 :: date, yyyy -mm -01 ); select extract ( month from 2013-01 -12 :: date ); Wynik to kolejno: 2013-01-01 oraz 1;

Przykład 1 Problem: W tabeli tmp tabela testowa wyciągnij rekordy gdzie płatność nie nastąpiła w weekend. Rozwiązanie: select * from tmp_tabela_testowa where extract ( dow from d_tranzakacji ) not in (0,6);

Przykład 2 Problem: Trzeba wyznaczyć liczbę dni roboczych między dwoma datami. Nie uwzględniamy dni świątecznych wypadających w tygodniu. Rozwiązanie: SELECT count (*) l_dni_roboczych FROM generate_series (1,( 2013-05 -01 :: date - 2013-04 -01 :: date )) i WHERE extract ( dow from ( 2013-05 -01 :: date + i)) NOT IN (0,6);

Czym są wyrażenia regularne Z ang. regular expressions, w skrócie regex lub regexp. Są to wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią języków regularnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha. W praktyce znalazły bardzo szerokie zastosowanie, pozwalają bowiem w łatwy sposób opisywać wzorce tekstu, natomiast istniejące algorytmy w efektywny sposób określają, czy podany ciąg znaków pasuje do wzorca lub wyszukują w tekście wystąpienia wzorca.

Podstawowa składnia Operator porównania: select ala ma konta ~ Ala ; -- wynik false select ala ma konta ~* Ala ; -- wynik true select ala ma konta!~* Ala ; -- wynik false

Znaki specjalne

Znaki specjalne

Znaki specjalne

Przykłady -- Przykładowe wyrażenia -- data w formacie yyyy -mm - dd select asdf2000-09 -11 ghjk ~* [0-9]{4} -[0-9]{1,2} -[0-9]{1,2} ; -- występują cyfry select asdf2000-09 -11 ghjk ~* [0-9]+ ; -- występują same cyfry select asdf2000-09 -11 ghjk ~* ^[0-9]+ $ ; -- liczby typu numeric select asdf2000.23423 ghjk ~* [0-9]+[.]{1}[0-9]+ ; -- [.]=\. -- występuje słowo ala lub kot select ala ma konta ~* ala kot ;

Koniec.