• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

DBS

Started by xxx3, 16.02.2012, 15:10:05

« predchdzajce - alie »

xxx3

aha, aj ma to napadlo, ze to bude opak, len som bol lenivy to vyskusat :D

Schat

Prosim vas, ake je heslo do moodla ? zacina na "d" 
vopred dik =) A este ak si to pamatate kedy ma pani T. konzultacne hodiny.

Wolfdale

Ak sa dobre pamätám, každá skupina má iné heslo.

Ešte sme to nedokončili celkom, ale takmer sme už začali.

zaky

7. select avg(salary) from hr.employees where department_id = 50;
MV1 ← σ department_id=50 (employees)
V   ← F AVG salary (MV1)

8. select department_id, avg(salary) from hr.employees
group by department_id
order by 2;
V(department_id, priemer) ← department_id F AVG salary (employees)

mam dotaz, ze preco v tom druhom je tam v tej zatvorke V( priemer) a v prvom nieje, resp. kedy sa to dava, pls skuste mi vysvetlit
to su vzorove riesene priklady z moodla

92% teenagerů neposlouchá svojí maminku. Patříš-li mezi zbývajících 8%, dej si tohle do podpisu

veteran

Quote from: zaky on  01.04.2012, 20:35:11
7. select avg(salary) from hr.employees where department_id = 50;
MV1 ← σ department_id=50 (employees)
V   ← F AVG salary (MV1)

8. select department_id, avg(salary) from hr.employees
group by department_id
order by 2;
V(department_id, priemer) ← department_id F AVG salary (employees)

mam dotaz, ze preco v tom druhom je tam v tej zatvorke V( priemer) a v prvom nieje, resp. kedy sa to dava, pls skuste mi vysvetlit
to su vzorove riesene priklady z moodla
Ak sa nemýlim, tak je to preto, lebo v sedmičke pracuješ len s jedným stĺpcom. Teda do zátvorky nemusíš nič písať. Akonáhle robíš s viacerými stĺpcami, musíš to uviesť do zátvorky.

Luk1

mozete tu postnut to pdfko s tymi vzorovymi prikladmi ? dik

Za slovensky narod bije mi srdce v hrudi.

xxx3

tu je, niekde ku koncu su tie priklady

Rajo

select max(salary), round(avg(salary)) from hr.employees;

algebra bude:
V(max(salary),round(avg(salary)) ) <-- F MAX salary, AVG salary (employees)
alebo:
V(max(salary),round(priemer) ) <-- F MAX salary, AVG salary (employees)
alebo:
V(round(priemer) ) <-- F MAX salary, AVG salary (employees)

veteran

Quote from: Rajo on  02.04.2012, 00:54:31
select max(salary), round(avg(salary)) from hr.employees;

algebra bude:
V(max(salary),round(avg(salary)) ) <-- F MAX salary, AVG salary (employees)
alebo:
V(max(salary),round(priemer) ) <-- F MAX salary, AVG salary (employees)
alebo:
V(round(priemer) ) <-- F MAX salary, AVG salary (employees)
Ja by som dal

V(maximum,round(priemer)) <-- F MAX salary, AVG salary (employees)

Wolfdale

Tiež tak som to dal.

Ešte sme to nedokončili celkom, ale takmer sme už začali.

xxx3

toto mam dobre takto?

select AVG(salary), COUNT(*) "Total" from hr.employees where department_id=60;

MV1 ← sigma department_id=60 (employees)
V ← F AVG salary, F COUNT employee_id (MV1)

veteran

Quote from: xxx3 on  02.04.2012, 17:05:51
toto mam dobre takto?

select AVG(salary), COUNT(*) "Total" from hr.employees where department_id=60;

MV1 ← sigma department_id=60 (employees)
V ← F AVG salary, F COUNT employee_id (MV1)
DDL skript je OK. V RA netreba písať pred každou agg. funkciou F. Stačí raz.

xxx3

dik .. a je to zle ked tam je viackrat ?  .. ci je to jedno ?

veteran

Quote from: xxx3 on  02.04.2012, 17:35:45
dik .. a je to zle ked tam je viackrat ?  .. ci je to jedno ?
Nvm či je to zle, ale čo sú vzorové príklady ku cvičeniam, tak tam je F len raz. Takže by som sa toho radšej držal ;)

xxx3

no ja v tych vyriesenych prikladoch nevidim taky priklad kde by boli v jednom priklade pouzite dve funkcie  .. vsade je len po jednej ... kde tam vidis taky priklad ? .. tu je pouzite AVG aj COUNT .. ale v tych vzorovych je vsade len bud AVG alebo COUNT ... nikde nie su obe v jednom

veteran

Quote from: xxx3 on  02.04.2012, 17:55:25
no ja v tych vyriesenych prikladoch nevidim taky priklad kde by boli v jednom priklade pouzite dve funkcie  .. vsade je len po jednej ... kde tam vidis taky priklad ? .. tu je pouzite AVG aj COUNT .. ale v tych vzorovych je vsade len bud AVG alebo COUNT ... nikde nie su obe v jednom
8. cvičenie, príklady na cvičenie, príklad č. 5, strana 10/13

xxx3

aha, OK ... 8. cviko som este nepozeral

xxx3

este toto, dobre je takto? asi 11. uloha

select SUM(salary), department_id from hr.employees group by department_id;
V(sucet, department_id) ← F SUM salary, department_id (employees)

veteran

#143
Quote from: xxx3 on  02.04.2012, 19:14:42
este toto, dobre je takto? asi 11. uloha

select SUM(salary), department_id from hr.employees group by department_id;
V(sucet, department_id) ← F SUM salary, department_id (employees)
Skript OK. V RA treba department_id písať pred F, tam nemáš nijakú agg. funkciu. Teda:

V(sucet, department_id) ← department_id F SUM salary (employees)

esperian


select department_id, job_id, count(*) from hr.employees group by department_id, job_id order by 1;

V(department_id, job_id, pocet) ← department_id, job_id F COUNT employee_id (employees)

1. do zatvorky k V piseme len vtedy ak mame viac stlpcov, alebo aj vtedy ak mame len jeden ?
2. department_id, job_id ktore je pred Fkom, je tam preto lebo je to group podla department_id, job_id ?
3. za Fko davam vsetky "stlpce" ale kedze department_id, job_id je uz red fkom, tak to tam uz dalsi krat nedavam ?

dobre rozumiem ?

veteran

Quote from: esperian on  04.04.2012, 00:53:331. do zatvorky k V piseme len vtedy ak mame viac stlpcov, alebo aj vtedy ak mame len jeden ?
Zátvorka nemusí byť len pri V, ale aj pri akomkoľvek MVx. ;)

Platí, že do zátvorky sa píšu názvy stĺpcov vtedy, ak je na pravej strane agregačná funkcia. A potom tú zátvorku opakuješ pri ďalších nasledujúcich MVx a na konci aj pri V.

Keď máš len jeden stĺpec, väčšinou nepíšeš nič. To sa stáva vtedy, keď máš len jednu agregačnú funkciu, ktorá je zároveň jediným stĺpcom na výpis.

Ak máš však vypísať len round(count(employee_id)), tak v RA ku V napíšeš zátvorku: V(round(pocet)) ← F COUNT employee_id (employees), hoci tam máš len jediný stĺpec.

Quote from: esperian on  04.04.2012, 00:53:332. department_id, job_id ktore je pred Fkom, je tam preto lebo je to group podla department_id, job_id ?
V podstate áno. Za GROUP BY píšeš všetky stĺpce zo SELECTu okrem agregačných. Agregačné funkcie (za Fkom) sa píšu na konci, aby boli od "neagragačných stĺpcov" oddelené. Ak to napíšeš opačne, vyzeralo by to tak, že ideš počítať COUNT aj department_id aj job_id


Quote from: esperian on  04.04.2012, 00:53:33
3. za Fko davam vsetky "stlpce" ale kedze department_id, job_id je uz red fkom, tak to tam uz dalsi krat nedavam ?
To Fko označuje, že za ním budeš definovať agregačné funkcie (COUNT, AVG, SUM, MAX, MIN a pod.). Nič viac.

esperian


Rajo

select first_name,last_name,job_title, department_name from hr.employees join hr.jobs using (job_id) join hr.departments using (department_id) where job_title like '%Manager%';

RA:
MV1 <-- σ job_title like '%Manager%' jobs
MV2 <-- employees  |><|  job_id = jov_id jobs
MV3 <-- MV2 |><| department_id = department_id departments
V <-- π first_name,last_name,job_title, department_name (MV3)


alebo:

MV1 <-- employees  |><|  job_id = jov_id jobs
MV2 <-- MV1 |><| department_id = department_id departments
MV3 <-- σ job_title like '%Manager%' jobs
V <-- π first_name,last_name,job_title, department_name (MV3)


veteran

QuoteMV1 <-- employees  |><|  job_id = jov_id jobs
MV2 <-- MV1 |><| department_id = department_id departments
MV3 <-- σ job_title like '%Manager%' jobs
V <-- π first_name,last_name,job_title, department_name (MV3)


Keď v MV3 zmeníš to jobs na konci na MV2, bude to "nagyon jó"  ;)

Rajo

Quote from: veteran on  07.04.2012, 00:16:17
QuoteMV1 <-- employees  |><|  job_id = jov_id jobs
MV2 <-- MV1 |><| department_id = department_id departments
MV3 <-- σ job_title like '%Manager%' jobs
V <-- π first_name,last_name,job_title, department_name (MV3)


Keď v MV3 zmeníš to jobs na konci na MV2, bude to "nagyon jó"  ;)

raz má selekciu v tých riešených úlohach ako prvú a raz pod join...kedy ma byť tak a kedy tak? :D