Hello Habr!
Sulod sa kapin sa 3 ka tuig ako nagtudlo sa SQL sa lainlaing mga sentro sa pagbansay, ug usa sa akong mga obserbasyon mao nga ang mga estudyante nag-master ug mas nakasabut sa SQL kung hatagan sila usa ka buluhaton, ug dili lamang maghisgot bahin sa mga posibilidad ug mga pundasyon sa teoretikal.
Niini nga artikulo, akong ipaambit kanimo ang akong listahan sa mga buluhaton nga akong gihatag sa mga estudyante isip homework ug diin nagpahigayon kami og nagkalain-laing matang sa brainstorms, nga mosangpot sa usa ka lawom ug tin-aw nga pagsabot sa SQL.
Ang SQL (ΛΙsΛkjuΛΙl; eng. structured query language) maoy usa ka declarative programming language nga gigamit sa paghimo, pag-usab ug pagdumala sa datos sa usa ka relational database nga gidumala sa usa ka angay nga database management system.
Makabasa ka bahin sa SQL gikan sa lainlain
Kini nga artikulo wala gituyo sa pagtudlo kanimo sa SQL gikan sa wala.
Mao na ningpadayon ta.
Atong gamiton ang ilado
Akong namatikdan nga atong tagdon lamang ang mga buluhaton sa SELECT. Walay mga buluhaton sa DML ug DDL.
buluhaton
Pagpugong ug Pag-sort sa Data
Talaan sa mga empleyado. Pagkuha usa ka lista nga adunay kasayuran bahin sa tanan nga mga empleyado
desisyon
SELECT * FROM employees
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado nga ginganlag 'David'
desisyon
SELECT *
FROM employees
WHERE first_name = 'David';
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado nga adunay job_id nga katumbas sa 'IT_PROG'
desisyon
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado gikan sa ika-50 nga departamento (department_id) nga adunay suweldo (suweldo) nga labaw sa 4000
desisyon
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado gikan sa ika-20 ug gikan sa ika-30 nga departamento (department_id)
desisyon
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
Talaan sa mga empleyado. Pagkuha ug listahan sa tanang empleyado kansang kataposang letra sa ilang ngalan kay 'a'
desisyon
SELECT *
FROM employees
WHERE first_name LIKE '%a';
Talaan sa mga empleyado. Pagkuha ug listahan sa tanang empleyado gikan sa ika-50 ug gikan sa ika-80 nga departamento (department_id) nga adunay bonus (ang bili sa kolum sa commission_pct walay sulod)
desisyon
SELECT *
FROM employees
WHERE (department_id = 50 OR department_id = 80)
AND commission_pct IS NOT NULL;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang ngalan adunay labing menos 2 ka letra 'n'
desisyon
SELECT *
FROM employees
WHERE first_name LIKE '%n%n%';
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado kansang ngalan mas taas sa 4 ka letra
desisyon
SELECT *
FROM employees
WHERE first_name LIKE '%_____%';
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang suweldo tali sa 8000 ug 9000 (inclusive)
desisyon
SELECT *
FROM employees
WHERE salary BETWEEN 8000 AND 9000;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang ngalan adunay simbolo nga '%'
desisyon
SELECT *
FROM employees
WHERE first_name LIKE '%%%' ESCAPE '';
Talaan sa mga empleyado. Pagkuha og lista sa tanang manager ID
desisyon
SELECT DISTINCT manager_id
FROM employees
WHERE manager_id IS NOT NULL;
Talaan sa mga empleyado. Pagkuha ug lista sa mga empleyado nga adunay ilang mga posisyon sa pormat: Donald(sh_clerk)
desisyon
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
Paggamit sa Single-Row Functions aron Ipasibo ang Output
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado kansang ngalan mas taas sa 10 ka letra
desisyon
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
Talaan sa mga empleyado. Pagkuha ug listahan sa tanang empleyado nga adunay letrang 'b' sa ilang ngalan (case insensitive)
desisyon
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang ngalan adunay labing menos 2 ka letra 'a'
desisyon
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name),'a',1,2) > 0;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang sweldo usa ka multiple sa 1000
desisyon
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
Talaan sa mga empleyado. Kuhaa ang unang 3-digit nga numero sa numero sa telepono sa empleyado kon ang iyang numero anaa sa format nga Π₯Π₯Π₯.Π₯Π₯Π₯.Π₯Π₯Π₯Π₯
desisyon
SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
FROM employees
WHERE phone_number LIKE '___.___.____';
Talaan sa mga departamento. Kuhaa ang unang pulong gikan sa ngalan sa departamento alang niadtong adunay labaw sa usa ka pulong sa ngalan
desisyon
SELECT department_name,
SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
first_word
FROM departments
WHERE INSTR (department_name, ' ') > 0;
Talaan sa mga empleyado. Pagkuha mga ngalan sa empleyado nga wala ang una ug katapusan nga letra sa ngalan
desisyon
SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
FROM employees;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado kansang katapusan nga letra sa ngalan katumbas sa 'm' ug ang gitas-on sa ngalan labaw sa 5
desisyon
SELECT *
FROM employees
WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;
Doble nga lamesa. Kuhaa ang petsa sa sunod Biyernes
desisyon
SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado nga nakauban sa kompanya sulod sa kapin sa 17 ka tuig
desisyon
SELECT *
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado kansang kataposang digit sa numero sa telepono kay katingad-an ug naglangkob sa 3 ka numero nga gibulag sa tulbok
desisyon
SELECT *
FROM employees
WHERE MOD (SUBSTR (phone_number, -1), 2) != 0
AND INSTR (phone_number,'.',1,3) = 0;
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado kansang job_id value human sa '_' sign adunay labing menos 3 ka karakter, apan kini nga value human sa '_' dili katumbas sa 'CLERK'
desisyon
SELECT *
FROM employees
WHERE LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado pinaagi sa pag-ilis sa tanang '.' sa PHONE_NUMBER nga bili sa '-'
desisyon
SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
FROM employees;
Paggamit sa Conversion Function ug Conditional Expression
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado nga mitrabaho sa unang adlaw sa bulan (bisan unsa)
desisyon
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'DD') = '01';
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado nga mitrabaho niadtong 2008
desisyon
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2008';
DUAL nga lamesa. Ipakita ang petsa ugma sa pormat: Ugma ang Ikaduhang adlaw sa Enero
desisyon
SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month') info
FROM DUAL;
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado ug ang ilang petsa sa pagsugod sa pormat: ika-21 sa Hunyo, 2007
desisyon
SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
FROM employees;
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado nga adunay pagtaas sa sweldo sa 20%. Ipakita ang suweldo nga adunay timaan sa dolyar
desisyon
SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
FROM employees;
Talaan sa mga empleyado. Pagkuha og lista sa tanang empleyado nga mitrabaho niadtong Pebrero 2007.
desisyon
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';
DUAL nga lamesa. I-export ang karon nga petsa, + segundo, + minuto, + oras, + adlaw, + bulan, + tuig
desisyon
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;
Talaan sa mga empleyado. Pagkuha ug lista sa tanang empleyado nga adunay bug-os nga sweldo (suweldo + commission_pct(%)) sa pormat: $24,000.00
desisyon
SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
FROM employees;
Talaan sa mga empleyado. Pagkuha usa ka lista sa tanan nga mga empleyado ug kasayuran bahin sa pagkaanaa sa mga bonus sa suweldo (Oo / Dili)
desisyon
SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
FROM employees;
Talaan sa mga empleyado. Pagkuha sa lebel sa suweldo sa matag empleyado: Walaβy 5000 ang gikonsiderar nga Ubos nga lebel, Labaw sa o katumbas sa 5000 ug ubos sa 10000 ang giisip nga Normal nga lebel, Labaw sa o katumbas sa 10000 giisip nga Taas nga lebel
desisyon
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;
Talaan sa mga nasud. Alang sa matag nasud, ipakita ang rehiyon diin kini nahimutang: 1-Europe, 2-America, 3-Asia, 4-Africa (walay Apil)
desisyon
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;
Pagreport sa Natibuok nga Data Gamit ang Mga Kalihokan sa Grupo
Talaan sa mga empleyado. Pagkuha ug report pinaagi sa department_id nga adunay minimum ug maximum nga sweldo, sayo ug ulahi nga mga petsa sa pag-abot ug gidaghanon sa mga empleyado. Pagsunud sa gidaghanon sa mga empleyado (desc)
desisyon
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;
Talaan sa mga empleyado. Pila ka mga empleyado kansang mga ngalan nagsugod sa parehas nga letra? Paghan-ay sumala sa gidaghanon. Ipakita lamang kadtong diin ang gidaghanon mas dako pa sa 1
desisyon
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;
Talaan sa mga empleyado. Pila ka mga empleyado ang nagtrabaho sa parehas nga departamento ug nakadawat parehas nga suweldo?
desisyon
SELECT department_id, salary, COUNT (*)
FROM employees
GROUP BY department_id, salary
HAVING COUNT (*) > 1;
Talaan sa mga empleyado. Pagkuha og report kung pila ka mga empleyado ang gi-hire sa matag adlaw sa semana. Paghan-ay sumala sa gidaghanon
desisyon
SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;
Talaan sa mga empleyado. Pagkuha og report kon pila ka empleyado ang na-hire sa tuig. Paghan-ay sumala sa gidaghanon
desisyon
SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');
Talaan sa mga empleyado. Kuhaa ang gidaghanon sa mga departamento nga adunay mga empleyado
desisyon
SELECT COUNT (COUNT (*)) department_count
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id;
Talaan sa mga empleyado. Pagkuha ug lista sa department_id nga adunay kapin sa 30 ka empleyado
desisyon
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
Talaan sa mga empleyado. Pagkuha ug listahan sa mga department_id ug ang rounded average nga sweldo sa mga empleyado sa matag departamento.
desisyon
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
Talaan sa mga nasud. Pagkuha ug listahan sa region_id sum sa tanang letra sa tanang country_name diin kapin sa 60
desisyon
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
Talaan sa mga empleyado. Pagkuha ug lista sa department_id diin ang mga empleyado sa daghang (>1) job_id nagtrabaho
desisyon
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
Talaan sa mga empleyado. Pagkuha ug lista sa manager_id kansang gidaghanon sa mga sakop mas dako pa sa 5 ug ang sumada sa tanang sweldo sa iyang mga sakop labaw pa sa 50000
desisyon
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
Talaan sa mga empleyado. Pagkuha ug lista sa manager_id kansang kasagarang sweldo sa tanan niyang sakop kay tali sa 6000 ug 9000 nga wala makadawat ug bonus (komisyon_pct walay sulod)
desisyon
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;
Talaan sa mga empleyado. Pagkuha sa pinakataas nga sweldo gikan sa tanang empleyado job_id nga natapos sa pulong 'CLERK'
desisyon
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';
Talaan sa mga empleyado. Pagkuha sa labing taas nga suweldo sa tanan nga kasagaran nga sweldo alang sa departamento
desisyon
SELECT MAX (AVG (salary))
FROM employees
GROUP BY department_id;
Talaan sa mga empleyado. Kuhaa ang gidaghanon sa mga empleyado nga adunay parehas nga gidaghanon sa mga letra sa ilang ngalan. Sa samang higayon, ipakita lamang kadtong kansang ngalan mas taas kay sa 5 ug ang gidaghanon sa mga empleyado nga adunay samang ngalan labaw pa sa 20. Pagsunud-sunod sumala sa gitas-on sa ngalan
desisyon
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);
Pagpakita sa Data gikan sa Daghang Mga Talaan Gamit ang mga Pagdugtong
Table Empleyado, Departamento, Lokasyon, Nasud, Rehiyon. Pagkuha og lista sa mga rehiyon ug ang gidaghanon sa mga empleyado sa matag rehiyon
desisyon
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;
Table Empleyado, Departamento, Lokasyon, Nasud, Rehiyon. Pagkuha ug detalyadong impormasyon bahin sa matag empleyado:
First_name, Last_name, Departamento, Trabaho, Kalye, Nasud, Rehiyon
desisyon
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);
Talaan sa mga empleyado. Ipakita ang tanan nga mga managers nga adunay labaw pa sa 6 nga mga empleyado
desisyon
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;
Talaan sa mga empleyado. Ipakita ang tanan nga empleyado nga wala magreport sa bisan kinsa
desisyon
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;
Talaan sa mga empleyado, Job_history. Ang lamesa sa Empleyado nagtipig sa tanan nga mga empleyado. Ang lamesa sa Job_history nagtipig sa mga empleyado nga mibiya sa kompanya. Pagkuha usa ka taho sa tanan nga mga empleyado ug ang ilang kahimtang sa kompanya (Nagtrabaho o mibiya sa kompanya nga adunay petsa sa pagbiya)
Pananglitan:
unang_ngalan | kahimtang
jennifer | Mibiya sa kompanya sa 31 sa Disyembre, 2006
Clara | Nagtrabaho karon
desisyon
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);
Table Empleyado, Departamento, Lokasyon, Nasud, Rehiyon. Pagkuha ug lista sa mga empleyado nga nagpuyo sa Europe (region_name)
desisyon
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';
Mga empleyado sa lamesa, mga departamento. Ipakita ang tanan nga mga departamento nga adunay labaw sa 30 nga mga empleyado
desisyon
SELECT department_name, COUNT (*)
FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
HAVING COUNT (*) > 30;
Mga empleyado sa lamesa, mga departamento. Ipakita ang tanan nga mga empleyado nga wala sa bisan unsang departamento
desisyon
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;
Mga empleyado sa lamesa, mga departamento. Ipakita ang tanang departamento nga walay empleyado
desisyon
SELECT department_name
FROM employees e
RIGHT JOIN departments d ON (e.department_id = d.department_id)
WHERE first_name IS NULL;
Talaan sa mga empleyado. Ipakita ang tanang empleyado nga walay sakop
desisyon
SELECT man.first_name
FROM employees emp
RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE emp.FIRST_NAME IS NULL;
Mga Empleyado sa lamesa, Trabaho, Departamento. Ipakita ang mga empleyado sa pormat: First_name, Job_title, Department_name.
Pananglitan:
unang_ngalan | titulo sa trabaho | Departamento_ngalan
Donald | pagpadala | Clerk Shipping
desisyon
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);
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado kansang mga manedyer nakakuha og trabaho kaniadtong 2005, apan sa parehas nga oras, kini nga mga trabahante mismo nakakuha trabaho sa wala pa ang 2005
desisyon
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');
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado kansang mga manedyer nakakuha trabaho sa bulan sa Enero sa bisan unsang tuig ug ang gitas-on sa job_title niini nga mga empleyado labaw pa sa 15 nga mga karakter
desisyon
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;
Paggamit sa mga Subquery sa Pagsulbad sa mga Pangutana
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado nga adunay labing taas nga ngalan.
desisyon
SELECT *
FROM employees
WHERE LENGTH (first_name) =
(SELECT MAX (LENGTH (first_name)) FROM employees);
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado nga adunay suweldo nga mas dako kaysa sa kasagaran nga suweldo sa tanan nga mga empleyado.
desisyon
SELECT *
FROM employees
WHERE salary > (SELECT AVG (salary) FROM employees);
Mga empleyado sa lamesa, mga departamento, mga lokasyon. Kuhaa ang siyudad diin ang mga empleyado adunay labing gamay sa kinatibuk-an.
desisyon
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);
Talaan sa mga empleyado. Pagkuha ug listahan sa mga empleyado kansang manedyer nakadawat ug suweldo nga labaw sa 15000.
desisyon
SELECT *
FROM employees
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE salary > 15000)
Mga empleyado sa lamesa, mga departamento. Ipakita ang tanang departamento nga walay empleyado
desisyon
SELECT *
FROM departments
WHERE department_id NOT IN (SELECT department_id
FROM employees
WHERE department_id IS NOT NULL);
Talaan sa mga empleyado. Ipakita ang tanang empleyado nga dili manedyer
desisyon
SELECT *
FROM employees
WHERE employee_id NOT IN (SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL)
Talaan sa mga empleyado. Ipakita ang tanan nga mga managers nga adunay labaw pa sa 6 nga mga empleyado
desisyon
SELECT *
FROM employees e
WHERE (SELECT COUNT (*)
FROM employees
WHERE manager_id = e.employee_id) > 6;
Mga empleyado sa lamesa, mga departamento. Ipakita ang mga empleyado nga nagtrabaho sa departamento sa IT
desisyon
SELECT *
FROM employees
WHERE department_id = (SELECT department_id
FROM departments
WHERE department_name = 'IT');
Mga Empleyado sa lamesa, Trabaho, Departamento. Ipakita ang mga empleyado sa pormat: First_name, Job_title, Department_name.
Pananglitan:
unang_ngalan | titulo sa trabaho | Departamento_ngalan
Donald | pagpadala | Clerk Shipping
desisyon
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;
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado kansang mga manedyer nakakuha og trabaho kaniadtong 2005, apan sa parehas nga oras, kini nga mga trabahante mismo nakakuha trabaho sa wala pa ang 2005
desisyon
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');
Talaan sa mga empleyado. Pagkuha usa ka lista sa mga empleyado kansang mga manedyer nakakuha trabaho sa bulan sa Enero sa bisan unsang tuig ug ang gitas-on sa job_title niini nga mga empleyado labaw pa sa 15 nga mga karakter
desisyon
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;
Kana lang sa pagkakaron.
Nanghinaut ko nga ang mga buluhaton makapaikag ug kulbahinam.
Idugang nako kini nga lista kutob sa mahimo.
Malipay usab ako sa bisan unsang mga komento ug sugyot.
PS: Kung adunay moabut nga usa ka makapaikag nga buluhaton sa PILI, isulat sa mga komentaryo, idugang ko kini sa lista.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ.
Source: www.habr.com