Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Podobné dokumenty
TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

Databáze SQL SELECT. David Hoksza

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Databázové systémy I

Databáze I. Přednáška 6

Úvod do databázových systémů

Obsah. SQL konstrukce select join Rekurze (rekurzivní with) Analytické funkce, group by Pivoting

SQL - SELECT. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 7

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Databáze 2011/2012. Optimalizace, základní konstrukty T-SQL RNDr.David Hoksza, Ph.D.

Informační systémy ve zdravotnictví. 10. cvičení

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

KIV/ZIS cvičení 5. Tomáš Potužák

U koly na procvic ení jazyka T-SQL

Informační systémy ve zdravotnictví. 8. cvičení

Databázové systémy. Dotazovací jazyk SQL - II

Úvod do databázových systémů

Databáze. Optimalizace, základní konstrukty T-SQL David Hoksza

KIV/ZIS - SELECT, opakování

5. blok Souhrnné a skupinové dotazy

Jazyk SQL slajdy k přednášce NDBI001

Úvod do databázových systémů 3. cvičení

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Operátory ROLLUP a CUBE

Databáze 2011/2012. Logický model DB. RNDr.David Hoksza, Ph.D.

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

6. blok část B Vnořené dotazy

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Úvod do databázových systémů

HTML šablona v MarushkaDesignu

PG 9.5 novinky ve vývoji aplikací

Úvod do databázových systémů

Databázové systémy Cvičení 5

Kapitola 4: SQL. Základní struktura

Jazyk S Q L základy, příkazy pro práci s daty

Vizualizace TIN (trojúhelníková nepravidelná síť) v Marushka Designu

6. blok část C Množinové operátory

Databázové systémy Tomáš Skopal

Materializované pohledy

Základní přehled SQL příkazů

Dotazovací jazyky I. Datová krychle. Soběslav Benda

MS Access Dotazy SQL

OQL. (Object Query Language) Michal Bartoš Filip Bureš

Sledování provedených změn v programu SAS

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

DATA CUBE. Mgr. Jiří Helmich

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

- sloupcové integritní omezení

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Databázové systémy. Cvičení 6: SQL

Dotazování v relačním modelu a SQL

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Změny detekované monitorem služeb na OPM 1. Konec SZ Vybere ta OPM, která v intervalu <aktuální den, D>:

Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D.

Databázové systémy a SQL

Databázové systémy I. - II. 2009/2010

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

ONLINESKLAD.CZ. Vysvětlení pojmů: V tomto manuálu i v celém systému figurují 3 základní osoby: Popis administračního rozhraní

KIV/ZIS cvičení 6. Tomáš Potužák

Témata v MarushkaDesignu

Tile systém v Marushka Designu

Dimenzionální modelování Profinit. All rights reserved.

Transakce Profinit. All rights reserved.

Specifikace pro SW aplikaci Start-up business.

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

OQL. Jakub Kýpeť, Ondřej Heřmánek

Databázové systémy a SQL

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Úvod do SQL v systému SAS Martin Branda

Dotazovací jazyk pro řazená data

Metodická pomůcka. Využívání záruk ČMZRB k zajišťování bankovních úvěrů

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

16. Kategorizace SW chyb, kritéria korektnosti a použitelnosti, spolehlivost SW

Helios Orange Plugin Zadávání vlastností

Jazyk SQL. Jaroslav Pokorný MFF UK, Praha J. Pokorný 1

Databázové systémy Cvičení 5.3

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

Databázové patterny Profinit. All rights reserved.

Sada 1 - PHP. 15. Výběr dat z databáze. Příkaz SELECT

Formální sémantika SQL dotazování

Vkládání, aktualizace, mazání

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Formální sémantika SQL dotazů

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Dotaz typu Common Info v MarushkaDesignu

Databázové systémy. Agregace, sumarizace, vnořené dotazy. Vilém Vychodil

Autorizace mapového serveru

Instalace a technické informace

6. SQL složitější dotazy, QBE

PROCESOR RELAČNÍ ALGEBRY

Možnosti připojení WMS služby do Klienta v Marushka Designu

Mistrovství České republiky v logických úlohách

Transkript:

Databáze 2011/2012 SQL SELECT II. RNDr.David Hksza, Ph.D. http://siret.cz/hksza

Osnva Pkrčilé SQL IN, EXIST, ANY, ALL GROUP BY, HAVING CASE, COALESCE Mnžinvé perace Cvičení pkrčilé dtazvání v SQL

Klauzule IN Ověření náležení hdnty slupce d výsledku vnřenéh dtazu SELECT * FROM Prduct WHERE PrductID IN (SELECT PrductID FROM SalesOrderDetail) Vyber prdukty, ke kterým existují bjednávky SELECT * FROM Prduct WHERE PrductID NOT IN (SELECT PrductID FROM SalesOrderDetail) Vyber prdukty, ke kterým neexistují bjednávky

Klauzule EXISTS Predikát EXISTS má hdntu TRUE, pkud vnřený dtaz, který je jeh argumentem, vrací neprázdnu mnžinu SELECT * FROM Prduct p WHERE EXISTS (SELECT 1 FROM SalesOrderDetail sd WHERE sd.prductid=p.prductid) Vyber prdukty, ke kterým existují bjednávky SELECT * FROM Prduct p WHERE NOT EXISTS (SELECT 1 FROM SalesOrderDetail sd JOIN SalesOrderHeader sh ON (sd.salesorderid=sh.salesorderid) WHERE sd.prductid=p.prductid AND sh.subttal > 1000) Vyber prdukty, které nefigurují v bjednávkách nad 1000

ALL, ANY/SOME Testvání hdnty prti výsledku vnřenéh dtazu SELECT sh.* FROM SalesOrderHeader sh WHERE 'Brakes' = ALL( SELECT pc.name FROM SalesOrderDetail sd JOIN Prduct p ON (sd.prductid = p.prductid) JOIN PrductCategry pc ON (p.prductcategryid=pc.prductcategryid) WHERE sh.salesorderid = sd.salesorderid ) Vyber bjednávky, v kterých figurují puze bjekty kategrie brzdy SELECT DISTINCT sh.* FROM SalesOrderHeader sh WHERE 'Brakes' = ANY( SELECT pc.name FROM SalesOrderDetail sd JOIN Prduct p ON (sd.prductid = p.prductid) JOIN PrductCategry pc ON (p.prductcategryid=pc.prductcategryid) WHERE sh.salesorderid = sd.salesorderid ) Vyber bjednávky, v kterých figurují bjekty kategrie brzdy

NULL hdnty v ALL, ANY, IN X p ALL(subselect) Vždy UNKNOWN pkud subselect bsahuje NULL hdntu, prtže nelze prvnat s neznámem jinak, než s výsledkem UNKNOWN X p ANY(subselect) NULL nemá vliv pkud subselect bsahuje NULL, prtže stačí aby perace p platila aspň pr jednu hdntu ze subselectu X IN (subselect) NULL nemá vliv pkud subselect bsahuje NULL, prtže stačí aby perace p platila aspň pr jednu hdntu ze subselectu X NOT IN (subselect) Vždy UNKNOWN pkud subselect bsahuje NULL hdntu, prtže nelze říct, zda X není v žádném řádku subselectu

GROUP BY Klauzule GROUP BY seskupuje řádky výsledků pdle splečných hdnt atributů uvedených v GROUP BY klauzuli Agregační perace se aplikují na jedntlivé skupiny SELECT PrductCategryID, COUNT(*) FROM Prduct GROUP BY PrductCategryID Vyber pčty prduktů v jedntlivých kategriích SELECT Name, COUNT(*) FROM Prduct GROUP BY PrductCategryID v SELECT klauzuli lze pužít puze slupce z GROUP BY, neb agregace

GROUP BY SELECT pc.name, COUNT(*) FROM Prduct p JOIN PrductCategry pc ON (p.prductcategryid=pc.prductcategryid) GROUP BY pc.name Vyber názvy kategrií a pčet prduktů v jedntlivých kategriích Šl by i bez pužití GROUP BY s pmcí vnřených dtazů SELECT p.name, SUM(p.ListPrice) AS suma FROM Prduct p JOIN SalesOrderDetail sd ON (p.prductid = sd.prductid) GROUP BY p.name ORDER BY suma DESC Vrať názvy prdkutů a sučet cen přes všechny bjednávky každéh z prduků (tj. klik každý z prduktů vydělal) setříděné sestupně pdle sumy

HAVING Analgie s WHERE klauzulí, ale zatímc WHERE klauzule se aplikuje na každý řádek zdrje, HAVING se aplikuje na celé skupiny, resp. na jejich seskupené hdnty SELECT p.name, SUM(p.ListPrice) AS suma FROM Prduct p JOIN SalesOrderDetail sd ON (p.prductid = sd.prductid) GROUP BY p.name HAVING SUM(p.ListPrice) BETWEEN 10000 AND 20000 Vyber prdukty, které vydělali mezi 10,000 a 20,000

Omezení pčtu řádku TOP k SELECT TOP 3 p.name FROM Prduct p JOIN SalesOrderDetail sd ON (p.prductid = sd.prductid) GROUP BY p.name ORDER BY SUM(p.ListPrice) DESC Vyber 3 nejvíce výdělečné prdukty rw_number() SELECT t.name, t.suma FROM ( SELECT p.name, SUM(p.ListPrice) AS suma, ROW_NUMBER() OVER (ORDER BY SUM(p.ListPrice) DESC) AS rn FROM SalesLT.Prduct p JOIN SalesLT.SalesOrderDetail sd ON (p.prductid = sd.prductid) GROUP BY p.name) t WHERE t.rn >=5 AND t.rn < 10 Vyber pátý až desátý nejvíce výdělečný prdukt

Omezení pčtu řádku rw_number() WITH t AS ( SELECT p.name, SUM(p.ListPrice) AS suma, ROW_NUMBER() OVER (ORDER BY SUM(p.ListPrice) DESC) AS rn FROM SalesLT.Prduct p JOIN SalesLT.SalesOrderDetail sd ON (p.prductid = sd.prductid) GROUP BY p.name ) SELECT t.name, t.suma FROM t WHERE t.rn >=5 AND t.rn < 10 Viz. předchzí, ale s užitím WITH klauzule

CASE CASE umžňuje na základě hdnty vrátit hdntu jinu (jak např. SWITCH v C++ neb Javě) SELECT PrductNumber, Categry = CASE PrductLine WHEN 'R' THEN 'Rad' WHEN 'M' THEN 'Muntain' WHEN 'T' THEN 'Turing' WHEN 'S' THEN 'Other sale items' ELSE 'Nt fr sale' END, Name FROM Prduct

COALESCE Funkce COALESCE vrací první NOT NULL hdntu ze seznamu svých argumentů SELECT COALESCE(hurly_wage * 40 * 52, salary, cmmissin * num_sales) AS 'Ttal Salary' FROM wages ORDER BY 'Ttal Salary Vyber platy v závislsti na vyplněných hdntách slupců hdinvá mzda, plat neb kmise

Sjedncení Mnžinvé perace SELECT PrductMdelID, Name FROM PrductMdel WHERE PrductMdelID NOT IN (3, 4) UNION SELECT PrductMdelID, Name FROM db.glves Vyber mdely, které nemají ID 3 a 4 neb t jsu rukavice Odstraňuje duplicity (mnžinvá perace) Lze pužít UNION ALL pr zachvání duplicitních hdnt

Rzdíl Mnžinvé perace SELECT PrductMdelID, Name FROM PrductMdel WHERE PrductMdelID NOT IN (3, 4) EXCEPT SELECT PrductMdelID, Name FROM Glves Vyber mdely, které nemají ID 3 neb 4 a zárveň t nejsu rukavice

Průnik Mnžinvé perace SELECT Name FROM PrductMdel INTERSECT SELECT Name FROM PrductCategry Vyber názvy mdelů, které jsu sučasně názvy kategrie