Dia duit, Habr!
Le níos mó ná 3 bliana anois tá mé ag múineadh SQL in ionaid oiliúna éagsúla, agus ceann de mo thuairimí ná go bhfuil mic léinn máistreacht agus tuiscint níos fearr ar SQL má thugtar tasc dóibh, agus ní hamháin insint faoi na féidearthachtaí agus an dúshraith teoiriciúil.
San Airteagal seo, roinnfidh mé leat mo liosta fadhbanna a thugaim do mhic léinn mar obair bhaile agus ar a ndéanaimid cineálacha éagsúla tobsmaointeoireachta, as a dtagann tuiscint dhomhain agus shoiléir ar SQL.
Is teanga ríomhchlárúcháin dhearbhaithe é SQL (ˈɛsˈkjuˈɛl; Béarla struchtúrtha ceiste) a úsáidtear chun sonraí a chruthú, a mhodhnú agus a bhainistiú i mbunachar sonraí coibhneasta arna bhainistiú ag córas bainistíochta bunachar sonraí cuí.
Is féidir leat léamh faoi SQL ó éagsúla
Níl an t-alt seo beartaithe chun SQL a mhúineadh duit ón tús.
Mar sin, déanaimis dul.
Bainfimid úsáid as an dea-aitheanta
Tugaim faoi deara nach ndéanfaimid ach tascanna SELECT a mheas. Níl aon tascanna DML nó DDL anseo.
tascanna
Sonraí a Shrianadh agus a Shórtáil
Tábla fostaithe. Faigh liosta le faisnéis faoi na fostaithe go léir
cinneadh
SELECT * FROM employees
Tábla fostaithe. Faigh liosta de na fostaithe go léir darb ainm ‘David’
cinneadh
SELECT *
FROM employees
WHERE first_name = 'David';
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil job_id acu cothrom le 'IT_PROG'
cinneadh
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
Tábla fostaithe. Faigh liosta de na fostaithe go léir ón 50ú roinn (department_id) a bhfuil tuarastal (tuarastal) níos mó ná 4000 acu
cinneadh
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
Tábla fostaithe. Faigh liosta de na fostaithe go léir ón 20ú agus 30ú roinn (department_id)
cinneadh
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil an litir dheireanach ina n-ainm 'a'
cinneadh
SELECT *
FROM employees
WHERE first_name LIKE '%a';
Tábla fostaithe. Faigh liosta de na fostaithe go léir ón 50ú agus ón 80ú roinn (department_id) a bhfuil bónas acu (níl an luach sa cholún commission_pct folamh)
cinneadh
SELECT *
FROM employees
WHERE (department_id = 50 OR department_id = 80)
AND commission_pct IS NOT NULL;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil ar a laghad 2 litir 'n' ina n-ainmneacha
cinneadh
SELECT *
FROM employees
WHERE first_name LIKE '%n%n%';
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil a n-ainmneacha níos faide ná 4 litir
cinneadh
SELECT *
FROM employees
WHERE first_name LIKE '%_____%';
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil a dtuarastal sa raon ó 8000 go 9000 (san áireamh)
cinneadh
SELECT *
FROM employees
WHERE salary BETWEEN 8000 AND 9000;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil an tsiombail '%' ina n-ainm
cinneadh
SELECT *
FROM employees
WHERE first_name LIKE '%%%' ESCAPE '';
Tábla fostaithe. Faigh liosta de na haitheantais bainisteoirí go léir
cinneadh
SELECT DISTINCT manager_id
FROM employees
WHERE manager_id IS NOT NULL;
Tábla fostaithe. Faigh liosta fostaithe lena bpoist san fhormáid: Donald(sh_clerk)
cinneadh
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
Feidhmeanna Aonair a Úsáid chun Aschur a Shaincheapadh
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil a n-ainmneacha níos faide ná 10 litir
cinneadh
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil an litir ‘b’ ina n-ainm (cás neamhíogair)
cinneadh
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil ar a laghad dhá litir 'a' ar a n-ainmneacha
cinneadh
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name),'a',1,2) > 0;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil a dtuarastal iolraí de 1000
cinneadh
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
Tábla fostaithe. Faigh an chéad uimhir 3-dhigit d'uimhir theileafóin fostaí má tá a uimhir san fhormáid XXX.XXX.XXXX
cinneadh
SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
FROM employees
WHERE phone_number LIKE '___.___.____';
Ranna tábla. Faigh an chéad fhocal ó ainm na roinne dóibh siúd a bhfuil níos mó ná focal amháin san ainm
cinneadh
SELECT department_name,
SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
first_word
FROM departments
WHERE INSTR (department_name, ' ') > 0;
Tábla fostaithe. Faigh ainmneacha fostaithe gan an chéad litir agus an litir dheireanach in ainm
cinneadh
SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
FROM employees;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil 'm' sa litir dheireanach ina n-ainm agus a bhfuil a n-ainm níos faide ná 5
cinneadh
SELECT *
FROM employees
WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;
Tábla Dual. Faigh dáta Dé hAoine seo chugainn
cinneadh
SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a d'oibrigh don chuideachta ar feadh níos mó ná 17 mbliana
cinneadh
SELECT *
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil a ndigit dheireanach dá n-uimhir theileafóin corr agus comhdhéanta de 3 uimhir scartha le ponc
cinneadh
SELECT *
FROM employees
WHERE MOD (SUBSTR (phone_number, -1), 2) != 0
AND INSTR (phone_number,'.',1,3) = 0;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil ar a laghad 3 charachtar ar a luach post_id tar éis an chomhartha '_', ach níl an luach seo tar éis an '_' cothrom le 'CLERK'
cinneadh
SELECT *
FROM employees
WHERE LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';
Tábla fostaithe. Faigh liosta de na fostaithe go léir trí '.' go léir a ionadú sa luach PHONE_NUMBER ar '-'
cinneadh
SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
FROM employees;
Feidhmeanna Tiontaithe agus Léirithe Coinníollacha a Úsáid
Tábla fostaithe. Faigh liosta de na fostaithe go léir a tháinig chun oibre ar an gcéad lá den mhí (ar bith)
cinneadh
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'DD') = '01';
Tábla fostaithe. Faigh liosta de na fostaithe go léir a tháinig chun oibre in 2008
cinneadh
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2008';
Tábla DUAL. Taispeáin dáta an lae amárach san fhormáid: Amárach an Dara lá de mhí Eanáir
cinneadh
SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month') info
FROM DUAL;
Tábla fostaithe. Faigh liosta de na fostaithe go léir agus an dáta ar tháinig gach fostaí ag obair san fhormáid: 21 Meitheamh, 2007
cinneadh
SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
FROM employees;
Tábla fostaithe. Faigh liosta de na fostaithe a bhfuil tuarastail méadaithe 20%. Taispeáin tuarastal le comhartha dollar
cinneadh
SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
FROM employees;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a thosaigh ag obair i mí Feabhra 2007.
cinneadh
SELECT *
FROM employees
WHERE hire_date BETWEEN TO_DATE ('01.02.2007', 'DD.MM.YYYY')
AND LAST_DAY (TO_DATE ('01.02.2007', 'DD.MM.YYYY'));
SELECT *
FROM employees
WHERE to_char(hire_date,'MM.YYYY') = '02.2007';
Tábla DUAL. Tabhair amach an dáta reatha, + dara, + nóiméad, + uair, + lá, + mí, + bliain
cinneadh
SELECT SYSDATE now,
SYSDATE + 1 / (24 * 60 * 60) plus_second,
SYSDATE + 1 / (24 * 60) plus_minute,
SYSDATE + 1 / 24 plus_hour,
SYSDATE + 1 plus_day,
ADD_MONTHS (SYSDATE, 1) plus_month,
ADD_MONTHS (SYSDATE, 12) plus_year
FROM DUAL;
Tábla fostaithe. Faigh liosta de na fostaithe go léir a bhfuil tuarastail iomlána acu (tuarastal + commission_pct(%)) san fhormáid: $24,000.00
cinneadh
SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
FROM employees;
Tábla fostaithe. Faigh liosta de na fostaithe go léir agus faisnéis maidir le hinfhaighteacht bónais tuarastail (Tá/Níl)
cinneadh
SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
FROM employees;
Tábla fostaithe. Faigh leibhéal tuarastail gach fostaí: Meastar go bhfuil níos lú ná 5000 Íseal, Níos mó ná nó cothrom le 5000 agus níos lú ná 10000 meastar Gnáthleibhéal, Meastar go bhfuil níos mó ná nó cothrom le 10000 Ardleibhéal
cinneadh
SELECT first_name,
salary,
CASE
WHEN salary < 5000 THEN 'Low'
WHEN salary >= 5000 AND salary < 10000 THEN 'Normal'
ELSE 'High'
END salary_level
FROM employees;
Tíortha Tábla. Do gach tír, taispeáin an réigiún ina bhfuil sé suite: 1-Eoraip, 2-Meiriceá, 3-Áise, 4-Afraic (gan Join)
cinneadh
SELECT country_name country,
DECODE (region_id,
1, 'Europe',
2, 'America',
3, 'Asia',
4, 'Africa',
'Unknown')
region
FROM countries;
SELECT country_name
country,
CASE region_id
WHEN 1 THEN 'Europe'
WHEN 2 THEN 'America'
WHEN 3 THEN 'Asia'
WHEN 4 THEN 'Africa'
ELSE 'Unknown'
END
region
FROM countries;
Sonraí Comhiomlánaithe a Thuairisciú ag Úsáid Feidhmeanna an Ghrúpa
Tábla fostaithe. Faigh tuairisc ó roinn_id leis an íostuarastal agus an t-uastuarastal, dátaí luatha agus déanacha teachta oibre agus líon na bhfostaithe. Sórtáil de réir líon na bhfostaithe (ag ísliú)
cinneadh
SELECT department_id,
MIN (salary) min_salary,
MAX (salary) max_salary,
MIN (hire_date) min_hire_date,
MAX (hire_date) max_hire_Date,
COUNT (*) count
FROM employees
GROUP BY department_id
order by count(*) desc;
Tábla fostaithe. Cé mhéad fostaithe a dtosaíonn a n-ainmneacha leis an litir chéanna? Sórtáil de réir cainníochta. Ná taispeáin ach na cinn sin ina bhfuil an chainníocht níos mó ná 1
cinneadh
SELECT SUBSTR (first_name, 1, 1) first_char, COUNT (*)
FROM employees
GROUP BY SUBSTR (first_name, 1, 1)
HAVING COUNT (*) > 1
ORDER BY 2 DESC;
Tábla fostaithe. Cé mhéad fostaithe a oibríonn sa roinn chéanna agus a fhaigheann an tuarastal céanna?
cinneadh
SELECT department_id, salary, COUNT (*)
FROM employees
GROUP BY department_id, salary
HAVING COUNT (*) > 1;
Tábla fostaithe. Faigh tuairisc ar cé mhéad fostaithe a fostaíodh gach lá den tseachtain. Sórtáil de réir cainníochta
cinneadh
SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;
Tábla fostaithe. Faigh tuairisc ar cé mhéad fostaithe a fostaíodh in aghaidh na bliana. Sórtáil de réir cainníochta
cinneadh
SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');
Tábla fostaithe. Faigh líon na ranna a bhfuil fostaithe acu
cinneadh
SELECT COUNT (COUNT (*)) department_count
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id;
Tábla fostaithe. Faigh liosta de roinn_ids a bhfuil níos mó ná 30 fostaí acu
cinneadh
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
Tábla fostaithe. Faigh liosta de na roinne_ids agus meántuarastal cruinn na bhfostaithe i ngach roinn.
cinneadh
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
Tíortha Tábla. Faigh an liosta region_id suim gach litir de gach tír_ainm ina bhfuil níos mó ná 60
cinneadh
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
Tábla fostaithe. Faigh liosta de na roinne_id ina n-oibríonn fostaithe roinnt (>1) post_ids
cinneadh
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
Tábla fostaithe. Faigh liosta de na bainisteoirí_aids ar mó a líon fo-orduithe ná 5 agus suim thuarastail uile a fho-riaracháin níos mó ná 50000
cinneadh
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
Tábla fostaithe. Faigh liosta de na bainisteoirí_ids a bhfuil meántuarastal a fho-chomhaltaí go léir sa raon ó 6000 go 9000 agus nach bhfaigheann bónais (tá commission_pct folamh)
cinneadh
SELECT manager_id, AVG (salary) avg_salary
FROM employees
WHERE commission_pct IS NULL
GROUP BY manager_id
HAVING AVG (salary) BETWEEN 6000 AND 9000;
Tábla fostaithe. Faigh an t-uastuarastal ó na fostaithe go léir job_id a chríochnaíonn leis an bhfocal 'CLERK'
cinneadh
SELECT MAX (salary) max_salary
FROM employees
WHERE job_id LIKE '%CLERK';
SELECT MAX (salary) max_salary
FROM employees
WHERE SUBSTR (job_id, -5) = 'CLERK';
Tábla fostaithe. Faigh an t-uastuarastal i measc na meán-thuarastail ar fad don Roinn
cinneadh
SELECT MAX (AVG (salary))
FROM employees
GROUP BY department_id;
Tábla fostaithe. Faigh an líon fostaithe leis an líon céanna litreacha ina n-ainm. Ag an am céanna, taispeáin ach iad siúd a bhfuil fad a n-ainm níos mó ná 5 agus líon na bhfostaithe leis an ainm céanna níos mó ná 20. Sórtáil de réir fad ainm
cinneadh
SELECT LENGTH (first_name), COUNT (*)
FROM employees
GROUP BY LENGTH (first_name)
HAVING LENGTH (first_name) > 5 AND COUNT (*) > 20
ORDER BY LENGTH (first_name);
SELECT LENGTH (first_name), COUNT (*)
FROM employees
WHERE LENGTH (first_name) > 5
GROUP BY LENGTH (first_name)
HAVING COUNT (*) > 20
ORDER BY LENGTH (first_name);
Ag Taispeánadh Sonraí ó Táblaí Iolracha Ag Úsáid Síntiúis
Fostaithe Tábla, Ranna, Láithreacha, Tíortha, Réigiúin. Faigh liosta de na réigiúin agus líon na bhfostaithe i ngach réigiún
cinneadh
SELECT region_name, COUNT (*)
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
JOIN countries c ON (l.country_id = c.country_id)
JOIN regions r ON (c.region_id = r.region_id)
GROUP BY region_name;
Fostaithe Tábla, Ranna, Láithreacha, Tíortha, Réigiúin. Faigh faisnéis mhionsonraithe faoi gach fostaí:
Céadainm, Last_ainm, Roinn, Post, Sráid, Tír, Réigiún
cinneadh
SELECT First_name,
Last_name,
Department_name,
Job_id,
street_address,
Country_name,
Region_name
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
JOIN countries c ON (l.country_id = c.country_id)
JOIN regions r ON (c.region_id = r.region_id);
Tábla fostaithe. Taispeáin na bainisteoirí go léir a bhfuil níos mó ná 6 fhostaí acu faoi réir
cinneadh
SELECT man.first_name, COUNT (*)
FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
GROUP BY man.first_name
HAVING COUNT (*) > 6;
Tábla fostaithe. Taispeáin gach fostaí nach dtuairiscíonn duine ar bith
cinneadh
SELECT emp.first_name
FROM employees emp
LEFT JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE man.FIRST_NAME IS NULL;
SELECT first_name
FROM employees
WHERE manager_id IS NULL;
Fostaithe Tábla, Job_history. Stórálann tábla na bhFostaithe na fostaithe go léir. Stórálann an tábla Job_history fostaithe a d’fhág an chuideachta. Faigh tuairisc ar gach fostaí agus a stádas sa chuideachta (Oibríonn nó d'fhág an chuideachta leis an dáta imeachta)
Sampla:
céad_ainm | stádas
Jennifer | D’fhág sé an chuideachta ar 31 Nollaig, 2006
Clara | Ag Obair faoi láthair
cinneadh
SELECT first_name,
NVL2 (
end_date,
TO_CHAR (end_date, 'fm""Left the company at"" DD ""of"" Month, YYYY'),
'Currently Working')
status
FROM employees e LEFT JOIN job_history j ON (e.employee_id = j.employee_id);
Fostaithe Tábla, Ranna, Láithreacha, Tíortha, Réigiúin. Faigh liosta fostaithe a bhfuil cónaí orthu san Eoraip (region_name)
cinneadh
SELECT first_name
FROM employees
JOIN departments USING (department_id)
JOIN locations USING (location_id)
JOIN countries USING (country_id)
JOIN regions USING (region_id)
WHERE region_name = 'Europe';
SELECT first_name
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
JOIN countries c ON (l.country_id = c.country_id)
JOIN regions r ON (c.region_id = r.region_id)
WHERE region_name = 'Europe';
Fostaithe Boird, Ranna. Taispeáin gach roinn a bhfuil níos mó ná 30 fostaí acu
cinneadh
SELECT department_name, COUNT (*)
FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
HAVING COUNT (*) > 30;
Fostaithe Boird, Ranna. Taispeáin gach fostaí nach bhfuil in aon roinn
cinneadh
SELECT first_name
FROM employees e
LEFT JOIN departments d ON (e.department_id = d.department_id)
WHERE d.department_name IS NULL;
SELECT first_name
FROM employees
WHERE department_id IS NULL;
Fostaithe Boird, Ranna. Taispeáin gach roinn ina bhfuil aon fostaithe
cinneadh
SELECT department_name
FROM employees e
RIGHT JOIN departments d ON (e.department_id = d.department_id)
WHERE first_name IS NULL;
Tábla fostaithe. Taispeáin na fostaithe go léir nach bhfuil duine ar bith faoi réir acu
cinneadh
SELECT man.first_name
FROM employees emp
RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE emp.FIRST_NAME IS NULL;
Fostaithe Tábla, Poist, Ranna. Taispeáin fostaithe san fhormáid: First_name, Job_title, Department_name.
Sampla:
Céad_ainm | Jab_teideal | Roinn_ainm
Domhnall | Loingseoireacht | Cléireach Loingseoireacht
cinneadh
SELECT first_name, job_title, department_name
FROM employees e
JOIN jobs j ON (e.job_id = j.job_id)
JOIN departments d ON (d.department_id = e.department_id);
Tábla fostaithe. Faigh liosta de na fostaithe a fuair a mbainisteoirí post i 2005, ach ag an am céanna fuair na fostaithe seo iad féin post roimh 2005
cinneadh
SELECT emp.*
FROM employees emp JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE TO_CHAR (man.hire_date, 'YYYY') = '2005'
AND emp.hire_date < TO_DATE ('01012005', 'DDMMYYYY');
Tábla fostaithe. Faigh liosta de na fostaithe a fuair a mbainisteoirí post i mí Eanáir de bhliain ar bith agus tá fad poist_teidil na bhfostaithe seo níos mó ná 15 carachtar
cinneadh
SELECT emp.*
FROM employees emp
JOIN employees man ON (emp.manager_id = man.employee_id)
JOIN jobs j ON (emp.job_id = j.job_id)
WHERE TO_CHAR (man.hire_date, 'MM') = '01' AND LENGTH (j.job_title) > 15;
Ag Úsáid Subqueries chun Ceisteanna a Réiteach
Tábla fostaithe. Faigh liosta fostaithe leis an ainm is faide.
cinneadh
SELECT *
FROM employees
WHERE LENGTH (first_name) =
(SELECT MAX (LENGTH (first_name)) FROM employees);
Tábla fostaithe. Faigh liosta d’fhostaithe a bhfuil tuarastal níos mó ná meántuarastal na bhfostaithe go léir acu.
cinneadh
SELECT *
FROM employees
WHERE salary > (SELECT AVG (salary) FROM employees);
Fostaithe, Ranna, Suímh tábla. Faigh an chathair ina dtuilleann fostaithe san iomlán an méid is lú.
cinneadh
SELECT city
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
GROUP BY city
HAVING SUM (salary) =
( SELECT MIN (SUM (salary))
FROM employees e
JOIN departments d ON (e.department_id = d.department_id)
JOIN locations l ON (d.location_id = l.location_id)
GROUP BY city);
Tábla fostaithe. Faigh liosta de na fostaithe a fhaigheann a mbainisteoir tuarastal níos mó ná 15000.
cinneadh
SELECT *
FROM employees
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE salary > 15000)
Fostaithe Boird, Ranna. Taispeáin gach roinn ina bhfuil aon fostaithe
cinneadh
SELECT *
FROM departments
WHERE department_id NOT IN (SELECT department_id
FROM employees
WHERE department_id IS NOT NULL);
Tábla fostaithe. Taispeáin gach fostaí nach bainisteoirí iad
cinneadh
SELECT *
FROM employees
WHERE employee_id NOT IN (SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL)
Tábla fostaithe. Taispeáin na bainisteoirí go léir a bhfuil níos mó ná 6 fhostaí acu faoi réir
cinneadh
SELECT *
FROM employees e
WHERE (SELECT COUNT (*)
FROM employees
WHERE manager_id = e.employee_id) > 6;
Fostaithe Boird, Ranna. Taispeáin fostaithe a oibríonn sa rannóg TF
cinneadh
SELECT *
FROM employees
WHERE department_id = (SELECT department_id
FROM departments
WHERE department_name = 'IT');
Fostaithe Tábla, Poist, Ranna. Taispeáin fostaithe san fhormáid: First_name, Job_title, Department_name.
Sampla:
Céad_ainm | Jab_teideal | Roinn_ainm
Domhnall | Loingseoireacht | Cléireach Loingseoireacht
cinneadh
SELECT first_name,
(SELECT job_title
FROM jobs
WHERE job_id = e.job_id)
job_title,
(SELECT department_name
FROM departments
WHERE department_id = e.department_id)
department_name
FROM employees e;
Tábla fostaithe. Faigh liosta de na fostaithe a fuair a mbainisteoirí post i 2005, ach ag an am céanna fuair na fostaithe seo iad féin post roimh 2005
cinneadh
SELECT *
FROM employees
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2005')
AND hire_date < TO_DATE ('01012005', 'DDMMYYYY');
Tábla fostaithe. Faigh liosta de na fostaithe a fuair a mbainisteoirí post i mí Eanáir de bhliain ar bith agus tá fad poist_teidil na bhfostaithe seo níos mó ná 15 carachtar
cinneadh
SELECT *
FROM employees e
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE TO_CHAR (hire_date, 'MM') = '01')
AND (SELECT LENGTH (job_title)
FROM jobs
WHERE job_id = e.job_id) > 15;
Sin go léir faoi láthair.
Tá súil agam go raibh na tascanna suimiúil agus spreagúil.
Cuirfidh mé leis an liosta tascanna seo oiread agus is féidir.
Beidh áthas orm freisin aon tuairimí agus moltaí a fháil.
PS: Má thagann duine suas le tasc SELECT suimiúil, scríobh isteach na tuairimí agus cuirfidh mé leis an liosta é.
Go raibh maith agat.
Foinse: will.com