Facebook iconTwitter icon

Nachádzate sa tu

Domov

05. Výpočty v SQL

Celý čas hovoríme o tom, že SQL je jazyk databázový, avšak vo svojej podstate sa jedná o výkonný výpočtový nástroj, prostredníctvom ktorého je možné robiť SQL kalkulácie nad obrovskými dátovými súbormi.

V SQL je v podstate možné vypočítať čokoľvek podobne ako je tomu v Exceli. Veľkou výhodou SQL je, že sa prostredníctvom GROUP BY vieme pohybovať a teda robiť výpočty na rôznych úrovniach detailu v tabuľke.

V predchádzajúcom článku sme si ukázali funkciu sum() prostredníctvom ktorej sme rátali sumu tržieb na rôznych úrovniach v rámci jednej spoločnosti. Analogicky, podobne ako je tomu v Exceli vieme zadefinovať iné základné SQL funkcie, ktoré si ukážeme na príklade tabuľky zamestnancov, ktorá obsahuje tri stĺpce: ID_zamestnanec, mzda, pocet_rokov.

SUM, AVG – suma a priemer

SELECT SUM(mzda) as celkova_vyplatena_mzda, AVG(mzda) as priemerna_mzda FROM tabulka_zamestnanci

MIN – minimum

SELECT MIN(mzda) as minimalna_mzda FROM tabulka_zamestnanci

MAX– maximum

SELECT MAX(mzda) as maximalna_mzda FROM tabulka_zamestnanci

COUNT – počet

SELECT COUNT(mzda) as pocet_vyplatenych_miezd, COUNT(ID_zamestnanec) as pocet_zamestnancov FROM tabulka_zamestnanci

V prípade COUNT je jedno, či je pole numerického alebo textového typu. Funkcia v podstate zráta záznamy a teda v oboch prípadoch vráti rovnaké číslo.

Doposiaľ sme sa zaoberali výpočtami len v rámci jedného stĺpca v tabuľke. Matematické operácie je samozrejme možné robiť aj v rámci jednotlivých stĺpcov. V nasledovnom príklade vyrátame celkovú mzdu zamestnanca, ktorá bude pozostávať z ročnej mzdy a odmien, pričom odmeny sa budú odvýjať od výšky ročnej mzdy, koeficienu odmien (0.01) ako aj od počtu rokov, koľko zamestnanec vo firme pracuje.

Matematicky celkovú mzdu vyrátame nasledovne: celkova_mzda=mzda+odmeny, kde odmeny=0.01*pocet_rokov*mzda. Celkovo teda máme rovnicu: celkova_mzda=mzda+0.01*pocet_rokov*mzda.

Výpočet zbehneme v dvoch variantách, a to na úrovni jednotlivých klientov, ako aj na úrovni celej spoločnosti.

Úroveň klientov:

SELECT ID_zamestnanec, SUM(mzda+0.01*pocet_rokov*mzda) as celkova_mzda FROM tabulka_zamestnanci

GROUP BY ID_zamestnanec

ORDER BY celkova_mzda desc [v pripade Access SQL: ORDER BY (mzda+0.01*pocet_rokov*mzda)] desc)

Úroveň celej spoločnosti:

SELECT SUM(mzda+0.01*pocet_rokov*mzda) as celkova_mzda FROM tabulka_zamestnanci
ORDER BY celkova_mzda [v pripade Access SQL: ORDER BY (mzda+0.01*pocet_rokov*mzda)]

V tomto tutoriáli sme priblížili spôsob ako robiť základné výpočty v SQL. Ako sme už spomenuli, v SQL je možné využiť množstvo rôznych vstavaných SQL funkcií, pričom sa dajú samozrejme naprogramovať aj rôzne vlastné, napríklad funkcie normálneho rozdelenia nomdist(), norminv() atd. .

Všetky príspevky v tejto kategórii:

Reklamné odkazy

kosime.sk
Kosenie trávy, čistenie pozemkov a záhradnícke práce