Salama, Habr!
Efa 3 taona mahery izao aho no nampianatra SQL tany amin'ireo ivon-toeram-piofanana isan-karazany, ary anisan'ny tsikaritro ny maha-mahay sy mahazo tsara kokoa ny SQL ny mpianatra raha omena asa izy ireo, fa tsy lazaina fotsiny momba ny mety sy ny fototra teorika.
Ato amin'ity lahatsoratra ity dia hizara aminareo ny lisitry ny olana omeko ny mpianatra ho entimody aho ary itarihanay karazana brainstorming isan-karazany, izay mitarika amin'ny fahatakarana lalina sy mazava ny SQL.
Ny SQL (ˈɛsˈkjuˈɛl; teny anglisy voarafitra amin'ny fanontaniana) dia tenim-pandaharana fanambaràna ampiasaina hamoronana, hanovana ary hitantana ny angona ao amin'ny angon-drakitra mifandraika izay tantanan'ny rafitra fitantanana angona mifanaraka amin'izany.
Azonao atao ny mamaky momba ny SQL avy amin'ny isan-karazany
Ity lahatsoratra ity dia tsy natao hampianatra anao SQL hatrany am-boalohany.
Ka ndao handeha.
Hampiasa ny fanta-daza isika
Marihiko fa ny asa SELECT ihany no hodinihintsika. Tsy misy asa DML na DDL eto.
asa
Famerana sy fanasokajiana ny angona
Latabatra mpiasa. Makà lisitra misy fampahalalana momba ny mpiasa rehetra
fanapahan-kevitra
SELECT * FROM employees
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra antsoina hoe 'David'
fanapahan-kevitra
SELECT *
FROM employees
WHERE first_name = 'David';
Latabatra mpiasa. Mahazoa lisitry ny mpiasa rehetra manana job_id mitovy amin'ny 'IT_PROG'
fanapahan-kevitra
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
Latabatra mpiasa. Mahazoa lisitry ny mpiasa rehetra avy amin'ny departemanta faha-50 (department_id) manana karama (karama) mihoatra ny 4000
fanapahan-kevitra
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
Latabatra mpiasa. Mahazoa lisitry ny mpiasa rehetra avy amin'ny departemanta faha-20 sy faha-30 (department_id)
fanapahan-kevitra
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
Latabatra mpiasa. Makà lisitr'ireo mpiasa rehetra manana ny litera farany amin'ny anarany dia 'a'
fanapahan-kevitra
SELECT *
FROM employees
WHERE first_name LIKE '%a';
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra ao amin'ny departemanta faha-50 sy faha-80 (department_id) izay manana bonus (tsy foana ny sanda ao amin'ny tsanganana commission_pct)
fanapahan-kevitra
SELECT *
FROM employees
WHERE (department_id = 50 OR department_id = 80)
AND commission_pct IS NOT NULL;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay misy litera 2 farafahakeliny 'n' ny anarany
fanapahan-kevitra
SELECT *
FROM employees
WHERE first_name LIKE '%n%n%';
Latabatra mpiasa. Makà lisitr'ireo mpiasa rehetra manana litera mihoatra ny 4 ny anarany
fanapahan-kevitra
SELECT *
FROM employees
WHERE first_name LIKE '%_____%';
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay manana karama eo anelanelan'ny 8000 ka hatramin'ny 9000 (ao anatin'izany)
fanapahan-kevitra
SELECT *
FROM employees
WHERE salary BETWEEN 8000 AND 9000;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay misy marika '%' ny anarany
fanapahan-kevitra
SELECT *
FROM employees
WHERE first_name LIKE '%%%' ESCAPE '';
Latabatra mpiasa. Mahazoa lisitry ny ID mpitantana rehetra
fanapahan-kevitra
SELECT DISTINCT manager_id
FROM employees
WHERE manager_id IS NOT NULL;
Latabatra mpiasa. Makà lisitry ny mpiasa miaraka amin'ny toerany amin'ny endrika: Donald(sh_clerk)
fanapahan-kevitra
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
Mampiasa Fampiasa andalana tokana mba hanamboarana ny Output
Latabatra mpiasa. Makà lisitr'ireo mpiasa rehetra manana litera mihoatra ny 10 ny anarany
fanapahan-kevitra
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra manana ny litera 'b' amin'ny anarany (tsy misy dikany)
fanapahan-kevitra
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay ahitana litera 2 farafahakeliny 'a' ny anarany
fanapahan-kevitra
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name),'a',1,2) > 0;
Latabatra mpiasa. Makà lisitr'ireo mpiasa rehetra manana karama 1000
fanapahan-kevitra
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
Latabatra mpiasa. Alao ny laharana 3 isa voalohany amin'ny nomeraon-telefaon'ny mpiasa raha toa amin'ny endrika XXX.XXX.XXXX ny laharany.
fanapahan-kevitra
SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
FROM employees
WHERE phone_number LIKE '___.___.____';
latabatra sampan-draharaha. Raiso ny teny voalohany avy amin'ny anaran'ny departemanta ho an'ireo izay manana teny mihoatra ny iray amin'ny anarana
fanapahan-kevitra
SELECT department_name,
SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
first_word
FROM departments
WHERE INSTR (department_name, ' ') > 0;
Latabatra mpiasa. Makà anaran'ny mpiasa tsy misy litera voalohany sy farany amin'ny anarana
fanapahan-kevitra
SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
FROM employees;
Latabatra mpiasa. Makà lisitr'ireo mpiasa rehetra manana ny litera farany amin'ny anarany dia 'm' ary manana ny anarany mihoatra ny 5
fanapahan-kevitra
SELECT *
FROM employees
WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;
Table Dual. Makà daty zoma manaraka
fanapahan-kevitra
SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra niasa tao amin'ny orinasa nandritra ny 17 taona mahery
fanapahan-kevitra
SELECT *
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay tsy mitovy ny isa farany amin'ny laharan-telefaonany ary misy isa 3 misaraka amin'ny teboka
fanapahan-kevitra
SELECT *
FROM employees
WHERE MOD (SUBSTR (phone_number, -1), 2) != 0
AND INSTR (phone_number,'.',1,3) = 0;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra izay manana sanda job_id aorian'ny famantarana '_' manana tarehintsoratra 3 farafahakeliny, fa ity sanda manaraka ny '_' ity dia tsy mitovy amin'ny 'CLERK'
fanapahan-kevitra
SELECT *
FROM employees
WHERE LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra amin'ny fanoloana ny '.' rehetra amin'ny sanda PHONE_NUMBER amin'ny '-'
fanapahan-kevitra
SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
FROM employees;
Fampiasana Fampiasana Fiovam-po sy Fitenenana misy fepetra
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra tonga niasa tamin'ny andro voalohan'ny volana (na inona)
fanapahan-kevitra
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'DD') = '01';
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra tonga niasa tamin'ny taona 2008
fanapahan-kevitra
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2008';
Tabilao DUAL. Asehoy ny daty rahampitso amin'ny endrika: Andro faharoan'ny Janoary rahampitso
fanapahan-kevitra
SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month') info
FROM DUAL;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra sy ny daty nahatongavan'ny mpiasa tsirairay tao am-piasana amin'ny endrika: 21 Jona 2007
fanapahan-kevitra
SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
FROM employees;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa manana karama avoakan'ny 20%. Asehoy ny karama misy marika dolara
fanapahan-kevitra
SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
FROM employees;
Latabatra mpiasa. Makà lisitry ny mpiasa rehetra nanomboka niasa tamin'ny Febroary 2007.
fanapahan-kevitra
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';
Tabilao DUAL. Avoahy ny daty ankehitriny, + segondra, + minitra, + ora, + andro, + volana, + taona
fanapahan-kevitra
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;
Latabatra mpiasa. Mahazoa lisitry ny mpiasa rehetra manana karama feno (karama + commission_pct(%)) amin'ny endrika: $24,000.00
fanapahan-kevitra
SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
FROM employees;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa rehetra sy fampahalalana momba ny fisian'ny tambin-karama (Eny/Tsia)
fanapahan-kevitra
SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
FROM employees;
Latabatra mpiasa. Raiso ny karaman'ny mpiasa tsirairay: Latsaky ny 5000 dia heverina ho ambany, mihoatra na mitovy amin'ny 5000 ary latsaky ny 10000 dia heverina ho normal, mihoatra na mitovy amin'ny 10000 dia heverina ho avo lenta
fanapahan-kevitra
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;
Firenena latabatra. Ho an'ny firenena tsirairay, asehoy ny faritra misy azy: 1-Europe, 2-Amerika, 3-Asia, 4-Afrika (tsy misy Join)
fanapahan-kevitra
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;
Mitatitra ny angona mitambatra amin'ny fampiasana ny asan'ny vondrona
Latabatra mpiasa. Mahazoa tatitra avy amin'ny department_id miaraka amin'ny karama farany ambany sy ambony indrindra, ny daty tonga aloha sy tara any am-piasana ary ny isan'ny mpiasa. Alaharo araka ny isan'ny mpiasa (midina)
fanapahan-kevitra
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;
Latabatra mpiasa. Firy ny mpiasa izay manomboka amin'ny litera mitovy ny anarany? Alaharo araka ny habeny. Asehoy afa-tsy ireo izay mihoatra ny 1 ny isany
fanapahan-kevitra
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;
Latabatra mpiasa. Firy ny mpiasa miasa ao amin’ny sampana iray ary mitovy karama?
fanapahan-kevitra
SELECT department_id, salary, COUNT (*)
FROM employees
GROUP BY department_id, salary
HAVING COUNT (*) > 1;
Latabatra mpiasa. Makà tatitra momba ny isan'ny mpiasa nokaramaina isan'andro isan-kerinandro. Alaharo araka ny habeny
fanapahan-kevitra
SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;
Latabatra mpiasa. Makà tatitra momba ny isan'ny mpiasa noraisina isan-taona. Alaharo araka ny habeny
fanapahan-kevitra
SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');
Latabatra mpiasa. Alao ny isan'ny sampana manana mpiasa
fanapahan-kevitra
SELECT COUNT (COUNT (*)) department_count
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id;
Latabatra mpiasa. Mahazoa lisitry ny department_id izay manana mpiasa mihoatra ny 30
fanapahan-kevitra
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
Latabatra mpiasa. Mahazoa lisitr'ireo department_id sy ny karama salan'isa boribory ho an'ny mpiasa isaky ny departemanta.
fanapahan-kevitra
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
Firenena latabatra. Raiso ny lisitry ny faritra_id ny fitambaran'ny litera rehetra amin'ny anarana_firenena rehetra misy 60 mahery
fanapahan-kevitra
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
Latabatra mpiasa. Mahazoa lisitr'ireo department_id izay iasan'ny mpiasa amin'ny (>1) job_ids maromaro
fanapahan-kevitra
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
Latabatra mpiasa. Mahazoa lisitr'ireo manager_id izay mihoatra ny 5 ny isan'ny mpiasany ary mihoatra ny 50000 ny fitambaran'ny karaman'ny mpiasany rehetra.
fanapahan-kevitra
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
Latabatra mpiasa. Mahazoa lisitr'ireo manager_id izay manana karama antonony ho an'ny mpiara-miasa aminy rehetra eo anelanelan'ny 6000 ka hatramin'ny 9000 ary tsy mahazo bonus (foana ny commission_pct)
fanapahan-kevitra
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;
Latabatra mpiasa. Raiso ny karama farany indrindra amin'ny mpiasa rehetra job_id izay mifarana amin'ny teny hoe 'CLERK'
fanapahan-kevitra
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';
Latabatra mpiasa. Mahazoa karama ambony indrindra amin'ireo karama antonony rehetra ho an'ny departemanta
fanapahan-kevitra
SELECT MAX (AVG (salary))
FROM employees
GROUP BY department_id;
Latabatra mpiasa. Alao ny isan'ny mpiasa manana litera mitovy amin'ny anarany. Amin'izay fotoana izay ihany koa dia asehoy ireo manana ny halavan'ny anarany mihoatra ny 5 ary ny isan'ny mpiasa mitovy anarana dia mihoatra ny 20. Alaharo araka ny halavan'ny anarana.
fanapahan-kevitra
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);
Fampisehoana angona avy amin'ny tabilao maromaro amin'ny fampiasana Joins
Mpiasan'ny latabatra, Departemanta, Toerana, Firenena, Faritra. Mahazoa lisitry ny faritra sy ny isan'ny mpiasa isaky ny faritra
fanapahan-kevitra
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;
Mpiasan'ny latabatra, Departemanta, Toerana, Firenena, Faritra. Makà fampahalalana amin'ny antsipiriany momba ny mpiasa tsirairay:
Anarana_voalohany, Anarana_anarana, Departemanta, Asa, Lalana, Firenena, Faritra
fanapahan-kevitra
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);
Latabatra mpiasa. Asehoy ny mpitantana rehetra izay manana mpiasa mihoatra ny 6 eo ambany fahefany
fanapahan-kevitra
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;
Latabatra mpiasa. Asehoy ny mpiasa rehetra tsy manao tatitra amin'iza na iza
fanapahan-kevitra
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;
Mpiasan'ny latabatra, Job_history. Ny latabatra mpiasa dia mitahiry ny mpiasa rehetra. Ny latabatra Job_history dia mitahiry ireo mpiasa nandao ny orinasa. Mahazoa tatitra momba ny mpiasa rehetra sy ny toerana misy azy ao amin'ny orinasa (Miasa na miala amin'ny orinasa miaraka amin'ny daty iaingana)
ohatra:
anarana_voalohany | sata
Jennifer | Niala tamin'ny orinasa tamin'ny 31 Desambra 2006
Clara | Miasa ankehitriny
fanapahan-kevitra
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);
Mpiasan'ny latabatra, Departemanta, Toerana, Firenena, Faritra. Mahazoa lisitr'ireo mpiasa monina any Eoropa (anarana_faritra)
fanapahan-kevitra
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';
Mpiasan'ny latabatra, Departemanta. Asehoy ny departemanta rehetra misy mpiasa maherin'ny 30
fanapahan-kevitra
SELECT department_name, COUNT (*)
FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
HAVING COUNT (*) > 30;
Mpiasan'ny latabatra, Departemanta. Asehoy ny mpiasa rehetra izay tsy ao amin'ny departemanta rehetra
fanapahan-kevitra
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;
Mpiasan'ny latabatra, Departemanta. Asehoy ny departemanta rehetra izay tsy misy mpiasa
fanapahan-kevitra
SELECT department_name
FROM employees e
RIGHT JOIN departments d ON (e.department_id = d.department_id)
WHERE first_name IS NULL;
Latabatra mpiasa. Asehoy ny mpiasa rehetra izay tsy manana olona eo ambany fahefany
fanapahan-kevitra
SELECT man.first_name
FROM employees emp
RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE emp.FIRST_NAME IS NULL;
Mpiasan'ny latabatra, Asa, Departemanta. Asehoy ny mpiasa amin'ny endrika: First_name, Job_title, Department_name.
ohatra:
Anarana_voalohany | Job_title | Anaran'ny departemanta
Donald | Fandefasana | Clerk Shipping
fanapahan-kevitra
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);
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa izay nahazo asa tamin'ny 2005 ny mpitantana, saingy tamin'izany fotoana izany dia nahazo asa talohan'ny taona 2005 ireo mpiasa ireo.
fanapahan-kevitra
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');
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa manana mpitantana nahazo asa tamin'ny Janoary isan-taona ary mihoatra ny 15 ny halavan'ny job_title an'ireo mpiasa ireo
fanapahan-kevitra
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;
Mampiasa Subqueries hamahana fanontaniana
Latabatra mpiasa. Makà lisitry ny mpiasa manana anarana lava indrindra.
fanapahan-kevitra
SELECT *
FROM employees
WHERE LENGTH (first_name) =
(SELECT MAX (LENGTH (first_name)) FROM employees);
Latabatra mpiasa. Makà lisitr'ireo mpiasa manana karama lehibe kokoa noho ny karama antonony ho an'ny mpiasa rehetra.
fanapahan-kevitra
SELECT *
FROM employees
WHERE salary > (SELECT AVG (salary) FROM employees);
Mpiasa, Departemanta, Toerana latabatra. Alao ny tanàna izay ahitana mpiasa amin'ny fitambarany mahazo kely indrindra.
fanapahan-kevitra
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);
Latabatra mpiasa. Makà lisitr'ireo mpiasa manana karama mihoatra ny 15000 ny mpitantana azy.
fanapahan-kevitra
SELECT *
FROM employees
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE salary > 15000)
Mpiasan'ny latabatra, Departemanta. Asehoy ny departemanta rehetra izay tsy misy mpiasa
fanapahan-kevitra
SELECT *
FROM departments
WHERE department_id NOT IN (SELECT department_id
FROM employees
WHERE department_id IS NOT NULL);
Latabatra mpiasa. Asehoy ny mpiasa rehetra tsy mpitantana
fanapahan-kevitra
SELECT *
FROM employees
WHERE employee_id NOT IN (SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL)
Latabatra mpiasa. Asehoy ny mpitantana rehetra izay manana mpiasa mihoatra ny 6 eo ambany fahefany
fanapahan-kevitra
SELECT *
FROM employees e
WHERE (SELECT COUNT (*)
FROM employees
WHERE manager_id = e.employee_id) > 6;
Mpiasan'ny latabatra, Departemanta. Asehoy ireo mpiasa miasa ao amin'ny departemanta IT
fanapahan-kevitra
SELECT *
FROM employees
WHERE department_id = (SELECT department_id
FROM departments
WHERE department_name = 'IT');
Mpiasan'ny latabatra, Asa, Departemanta. Asehoy ny mpiasa amin'ny endrika: First_name, Job_title, Department_name.
ohatra:
Anarana_voalohany | Job_title | Anaran'ny departemanta
Donald | Fandefasana | Clerk Shipping
fanapahan-kevitra
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;
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa izay nahazo asa tamin'ny 2005 ny mpitantana, saingy tamin'izany fotoana izany dia nahazo asa talohan'ny taona 2005 ireo mpiasa ireo.
fanapahan-kevitra
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');
Latabatra mpiasa. Mahazoa lisitr'ireo mpiasa manana mpitantana nahazo asa tamin'ny Janoary isan-taona ary mihoatra ny 15 ny halavan'ny job_title an'ireo mpiasa ireo
fanapahan-kevitra
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;
Izay ihany aloha izao.
Manantena aho fa nahaliana sy nahafinaritra ny asa.
Hanampy amin'ity lisitry ny asa ity aho araka izay azo atao.
Ho faly koa aho handray ny fanehoan-kevitra sy soso-kevitra.
PS: Raha misy olona tonga amin'ny asa SELECT mahaliana dia manorata ao amin'ny fanehoan-kevitra dia ampiako ao anaty lisitra.
Спасибо.
Source: www.habr.com