Silav Habr!
Zêdetirî 3 salan e ku ez SQL di navendên perwerdehiyê yên cihêreng de hîn dikim, û yek ji çavdêriyên min ev e ku xwendekar SQL çêtir fêr dibin ger ku peywirek ji wan re were dayîn, ne tenê li ser îmkan û bingehên teorîk were gotin.
Di vê gotarê de, ez ê navnîşa xwe ya pirsgirêkên ku ez wekî karê malê didim xwendekaran û ku em li ser wan cûrbecûr bahozên mêjî pêk tînin, bi we re parve bikim, ku rê li ber têgihiştinek kûr û zelal a SQL vedike.
SQL (ˈɛsˈkjuˈɛl; Zimanê îngilîzî yê pirsiyarê birêkûpêk) zimanek bernamesaziya daxuyandî ye ku ji bo afirandina, guheztin û birêvebirina daneyan di databasek têkildar de ku ji hêla pergalek rêveberiya databasê ya guncan ve tê rêvebirin tê bikar anîn.
Hûn dikarin li ser SQL ji cûrbecûr bixwînin
Ev gotar ne armanc e ku hûn SQL ji nû ve hîn bikin.
De ka em herin.
Em ê yên naskirî bikar bînin
Ez not dikim ku em ê tenê karên SELECT bifikirin. Li vir peywirên DML an DDL tune.
erkên
Sînorkirin û Rêzkirina Daneyên
Tabloya karmendan. Lîsteyek bi agahdariya hemî karmendan bistînin
biryar
SELECT * FROM employees
Tabloya karmendan. Lîsteya hemî karmendên bi navê 'David' bistînin
biryar
SELECT *
FROM employees
WHERE first_name = 'David';
Tabloya karmendan. Lîsteya hemî xebatkarên bi job_id wekhev 'IT_PROG' bistînin
biryar
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
Tabloya karmendan. Lîsteya hemî karmendên ji beşa 50-an (department_id) bi meaş (meaş) ji 4000 mezintir bistînin.
biryar
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
Tabloya karmendan. Lîsteya hemî xebatkarên ji beşa 20-an û 30-an bistînin (department_id)
biryar
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
Tabloya karmendan. Lîsteya hemî xebatkarên ku tîpa paşîn a navê wan 'a' ye bistînin
biryar
SELECT *
FROM employees
WHERE first_name LIKE '%a';
Tabloya karmendan. Lîsteya hemî karmendên ji beşa 50-emîn û 80-an (department_id) yên ku bonusek wan heye bistînin (nirxa di stûna komîsyon_pct de ne vala ye)
biryar
SELECT *
FROM employees
WHERE (department_id = 50 OR department_id = 80)
AND commission_pct IS NOT NULL;
Tabloya karmendan. Lîsteya hemî karmendên ku navên wan herî kêm 2 tîpên 'n' hene bistînin
biryar
SELECT *
FROM employees
WHERE first_name LIKE '%n%n%';
Tabloya karmendan. Lîsteya hemî karmendên ku navên wan ji 4 tîpan dirêjtir in bistînin
biryar
SELECT *
FROM employees
WHERE first_name LIKE '%_____%';
Tabloya karmendan. Navnîşek hemî karmendên ku meaşê wan di navbera 8000 û 9000 de ye (tevlî) bistînin
biryar
SELECT *
FROM employees
WHERE salary BETWEEN 8000 AND 9000;
Tabloya karmendan. Lîsteya hemî karmendên ku navê wan sembola '%' heye bigire
biryar
SELECT *
FROM employees
WHERE first_name LIKE '%%%' ESCAPE '';
Tabloya karmendan. Navnîşek hemî nasnameyên rêveberê bistînin
biryar
SELECT DISTINCT manager_id
FROM employees
WHERE manager_id IS NOT NULL;
Tabloya karmendan. Navnîşek karmendan bi pozîsyonên wan re bi formê bistînin: Donald(sh_clerk)
biryar
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
Bikaranîna Fonksiyonên Yek-Rew ji bo Xweserkirina Hilberê
Tabloya karmendan. Lîsteya hemî karmendên ku navên wan ji 10 tîpan dirêjtir in bistînin
biryar
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
Tabloya karmendan. Lîsteya hemî xebatkarên ku di navê wan de tîpa 'b' heye (nehessasiyeta mezin) bistînin
biryar
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
Tabloya karmendan. Lîsteya hemî xebatkarên ku navên wan herî kêm 2 tîpên 'a' hene bistînin.
biryar
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name),'a',1,2) > 0;
Tabloya karmendan. Navnîşek hemî karmendên ku meaşê wan ji 1000-ê pirjimar e bistînin
biryar
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
Tabloya karmendan. Ger hejmara wî di forma XXX.XXX.XX de be, hejmara 3-hejmar a yekem a jimareya têlefonê ya karmendek bistînin.
biryar
SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
FROM employees
WHERE phone_number LIKE '___.___.____';
Dezgehên sifrê. Ji bo kesên ku di nav de ji yek peyvan zêdetir hene peyva yekem ji navê beşê bistînin
biryar
SELECT department_name,
SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
first_word
FROM departments
WHERE INSTR (department_name, ' ') > 0;
Tabloya karmendan. Navên karmendan bêyî tîpa yekem û paşîn di nav de bistînin
biryar
SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
FROM employees;
Tabloya karmendan. Lîsteya hemû xebatkarên ku tîpa wan a dawîn a navê wan 'm' e û navê wan ji 5'an dirêjtir e, bistînin
biryar
SELECT *
FROM employees
WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;
Table Dual. Roja Înê ya din bistînin
biryar
SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;
Tabloya karmendan. Lîsteya hemî karmendên ku ji 17 salan zêdetir ji bo pargîdaniyê xebitîne bistînin
biryar
SELECT *
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;
Tabloya karmendan. Lîsteya hemî xebatkarên ku hêjmara wan a paşîn a têlefona wan xerîb e û ji 3 hejmarên ku bi xalekê veqetandî pêk tê bistînin.
biryar
SELECT *
FROM employees
WHERE MOD (SUBSTR (phone_number, -1), 2) != 0
AND INSTR (phone_number,'.',1,3) = 0;
Tabloya karmendan. Lîsteya hemî xebatkarên ku nirxa job_id piştî nîşana '_' bi kêmî ve 3 tîpan hene, lê ev nirxa piştî '_'yê ne bi 'CLERK' re ye.
biryar
SELECT *
FROM employees
WHERE LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';
Tabloya karmendan. Bi guheztina hemî '.' di nirxa PHONE_NUMBER de navnîşek hemî karmendan bistînin li ser '-'
biryar
SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
FROM employees;
Bikaranîna Fonksiyonên Veguheztinê û Bilêvkirinên Şertkirî
Tabloya karmendan. Lîsteya hemî xebatkarên ku di roja yekem a mehê de hatine ser kar bistînin (her)
biryar
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'DD') = '01';
Tabloya karmendan. Lîsteya hemî karmendên ku di 2008 de hatine ser kar bistînin
biryar
SELECT *
FROM employees
WHERE TO_CHAR (hire_date, 'YYYY') = '2008';
Table DUAL. Dîroka sibe bi şeklê nîşan bide: Sibe roja duyemîn a Çile ye
biryar
SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month') info
FROM DUAL;
Tabloya karmendan. Lîsteya hemî karmendan û tarîxa ku her karmendek gihîştiye kar bi formê bistînin: 21-ê Hezîran, 2007
biryar
SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
FROM employees;
Tabloya karmendan. Lîsteya xebatkarên ku mûçeyên wan ji sedî 20 zêde bûne bistînin. Meaş bi nîşana dolarê nîşan bide
biryar
SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
FROM employees;
Tabloya karmendan. Lîsteya hemî karmendên ku di Sibata 2007 de dest bi kar kirine bistînin.
biryar
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';
Table DUAL. Dîroka heyî, + duyemîn, + deqîqe, + saet, + roj, + meh, + sal derxe
biryar
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;
Tabloya karmendan. Navnîşek hemî karmendên bi mûçeyên tam (meaş + komîsyon_pct (%)) bi formê bistînin: 24,000.00 $
biryar
SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
FROM employees;
Tabloya karmendan. Lîsteya hemî karmendan û agahdariya li ser hebûna bonusên meaş bistînin (Erê / Na)
biryar
SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
FROM employees;
Tabloya karmendan. Asta meaşê her karmendek bistînin: Kêmtir ji 5000 kêm tê hesibandin, ji 5000 mezintir an wekhev û kêmtir ji 10000 asta normal tê hesibandin, ji 10000 zêdetir an wekhev tê asta bilind.
biryar
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;
Welatên Table. Ji bo her welatekî, herêma ku lê ye nîşan bide: 1-Ewropa, 2-Amerîka, 3-Asya, 4-Efrîqa (bê Tevlêbûn)
biryar
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;
Raporkirina Daneyên Berhevkirî Bi Bikaranîna Fonksiyonên Komê
Tabloya karmendan. Raporek ji hêla beşa_id ve bi mûçeya herî kêm û herî zêde, rojên zû û dereng hatina ser kar û hejmara karmendan bistînin. Li gorî hejmara karmendan rêz bikin (jêr daketî)
biryar
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;
Tabloya karmendan. Çend xebatkarên ku navên wan bi heman herfê dest pê dikin? Li gorî mîqdarê rêz bikin. Tenê yên ku hêjmar ji 1-ê mezintir e nîşan bidin
biryar
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;
Tabloya karmendan. Çend karmend di heman beşê de dixebitin û heman meaş distînin?
biryar
SELECT department_id, salary, COUNT (*)
FROM employees
GROUP BY department_id, salary
HAVING COUNT (*) > 1;
Tabloya karmendan. Raporek bistînin ka çend karmend di her rojên hefteyê de hatine girtin. Li gorî mîqdarê rêz bikin
biryar
SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;
Tabloya karmendan. Raporek li ser çend karmendan bi salê bistînin. Li gorî mîqdarê rêz bikin
biryar
SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');
Tabloya karmendan. Hejmara beşên ku karmend hene bistînin
biryar
SELECT COUNT (COUNT (*)) department_count
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id;
Tabloya karmendan. Navnîşek dezgehên_idên ku ji 30 zêdetir karmend hene bistînin
biryar
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
Tabloya karmendan. Navnîşek beşa_ids û meaşê navînî yê karmendan li her beşê bistînin.
biryar
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
Welatên Table. Lîsteya herêmê_id berhevoka hemî herfên navên_welatên ku ji 60î zêdetir in bistînin
biryar
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
Tabloya karmendan. Lîsteya dezgeh_id-ên ku karmendên çend (> 1) job_id tê de dixebitin bistînin
biryar
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
Tabloya karmendan. Lîsteya rêveber_idên ku jimara bindestên wan ji 5an mezintir e û berhevoka hemî mûçeyên bindestên wî ji 50000 mezintir e bistînin.
biryar
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
Tabloya karmendan. Navnîşek manager_idên ku meaşê navînî yên hemî bindestên wî di navbera 6000 heya 9000 de ye û bonusan wernagirin bistînin (komîsyon_pct vala ye)
biryar
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;
Tabloya karmendan. Ji hemî karmendan mûçeya herî zêde bistînin job_id ku bi peyva 'CLERK' bi dawî dibe
biryar
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';
Tabloya karmendan. Di nav hemî mûçeyên navîn de ji bo beşê mûçeya herî zêde bistînin
biryar
SELECT MAX (AVG (salary))
FROM employees
GROUP BY department_id;
Tabloya karmendan. Hejmara karmendan bi heman hejmara tîpan di navê wan de bistînin. Di heman demê de, tenê yên ku dirêjahiya navên wan ji 5an zêdetir e û hejmara xebatkarên bi heman navî ji 20an zêdetir e nîşan bide. Li gorî dirêjahiya navan rêz bikin
biryar
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);
Nîşandana Daneyên ji Gelek Tabloyên Bi Bikaranîna Tevlîbûnê
Karmendên Table, Dezgeh, Cih, Welat, Herêm. Li her herêmê navnîşek herêman û hejmara karmendan bistînin
biryar
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;
Karmendên Table, Dezgeh, Cih, Welat, Herêm. Li ser her karmendek agahdariya berfireh bistînin:
Nav, Paşnav, Dezgeh, Kar, Kolan, Welat, Herêm
biryar
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);
Tabloya karmendan. Hemî rêvebirên ku ji 6 zêdetir xebatkarên wan ên bindest in nîşan bidin
biryar
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;
Tabloya karmendan. Hemî xebatkarên ku ji kesî re rapor nakin nîşan bidin
biryar
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;
Karmendên Table, Job_history. Tabloya Karmend hemî karmendan diparêze. Tabloya Job_history karmendên ku ji pargîdaniyê derketine diparêze. Raporek li ser hemî karmendan û rewşa wan a di pargîdaniyê de bistînin (Bi dîroka derketinê re kar dike an ji pargîdaniyê derket)
Nimûne:
yekem_nav | cî
Jennifer | Di 31ê Kanûna Pêşîn, 2006 de ji pargîdaniyê derket
Clara | Niha dixebite
biryar
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);
Karmendên Table, Dezgeh, Cih, Welat, Herêm. Lîsteya xebatkarên ku li Ewropayê dijîn bistînin (navê_herêmê)
biryar
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';
Karmendên Table, Dezgehên. Hemî beşên ku ji 30 zêdetir karmend in nîşan bidin
biryar
SELECT department_name, COUNT (*)
FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
HAVING COUNT (*) > 30;
Karmendên Table, Dezgehên. Hemî xebatkarên ku di tu beşê de ne nîşan bidin
biryar
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;
Karmendên Table, Dezgehên. Hemî beşên ku tê de karmend nîn in nîşan bidin
biryar
SELECT department_name
FROM employees e
RIGHT JOIN departments d ON (e.department_id = d.department_id)
WHERE first_name IS NULL;
Tabloya karmendan. Hemî xebatkarên ku kesek jêrdestê wan nîne nîşan bidin
biryar
SELECT man.first_name
FROM employees emp
RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
WHERE emp.FIRST_NAME IS NULL;
Karmendên Table, Kar, Dezgehên. Karmendan di formê de nîşan bide: Navê_Navê, Sernav_kar, Navê_Wezaretê.
Nimûne:
Navê_Navê | Sernav_kar | Dezgeha_name
Donald | Shipping | Clerk Shipping
biryar
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);
Tabloya karmendan. Lîsteya xebatkarên ku rêvebirên wan di sala 2005-an de kar girtine bistînin, lê di heman demê de van karmendan bi xwe beriya 2005-an kar girtine.
biryar
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');
Tabloya karmendan. Lîsteya xebatkarên ku rêvebirên wan di meha Çile ya her salê de kar girtine bistînin û dirêjahiya sernav_kar a van karmendan ji 15 tîpan zêdetir e.
biryar
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;
Ji bo Çareserkirina Pirsên Binpirsiyan Bikaranîn
Tabloya karmendan. Lîsteya xebatkarên bi navê herî dirêj bistînin.
biryar
SELECT *
FROM employees
WHERE LENGTH (first_name) =
(SELECT MAX (LENGTH (first_name)) FROM employees);
Tabloya karmendan. Navnîşek xebatkarên bi meaş ji mûçeya navîn a hemî karmendan mezintir bistînin.
biryar
SELECT *
FROM employees
WHERE salary > (SELECT AVG (salary) FROM employees);
Karmend, Dezgeh, Tabloya Cihan. Bajarê ku tê de karmend bi tevahî kêmtirîn qezenc dikin bistînin.
biryar
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);
Tabloya karmendan. Navnîşek karmendên ku rêveberê wan ji 15000 zêdetir meaş distîne bistînin.
biryar
SELECT *
FROM employees
WHERE manager_id IN (SELECT employee_id
FROM employees
WHERE salary > 15000)
Karmendên Table, Dezgehên. Hemî beşên ku tê de karmend nîn in nîşan bidin
biryar
SELECT *
FROM departments
WHERE department_id NOT IN (SELECT department_id
FROM employees
WHERE department_id IS NOT NULL);
Tabloya karmendan. Hemî karmendên ku ne rêveber in nîşan bidin
biryar
SELECT *
FROM employees
WHERE employee_id NOT IN (SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL)
Tabloya karmendan. Hemî rêvebirên ku ji 6 zêdetir xebatkarên wan ên bindest in nîşan bidin
biryar
SELECT *
FROM employees e
WHERE (SELECT COUNT (*)
FROM employees
WHERE manager_id = e.employee_id) > 6;
Karmendên Table, Dezgehên. Karmendên ku di beşa IT-ê de dixebitin nîşan bidin
biryar
SELECT *
FROM employees
WHERE department_id = (SELECT department_id
FROM departments
WHERE department_name = 'IT');
Karmendên Table, Kar, Dezgehên. Karmendan di formê de nîşan bide: Navê_Navê, Sernav_kar, Navê_Wezaretê.
Nimûne:
Navê_Navê | Sernav_kar | Dezgeha_name
Donald | Shipping | Clerk Shipping
biryar
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;
Tabloya karmendan. Lîsteya xebatkarên ku rêvebirên wan di sala 2005-an de kar girtine bistînin, lê di heman demê de van karmendan bi xwe beriya 2005-an kar girtine.
biryar
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');
Tabloya karmendan. Lîsteya xebatkarên ku rêvebirên wan di meha Çile ya her salê de kar girtine bistînin û dirêjahiya sernav_kar a van karmendan ji 15 tîpan zêdetir e.
biryar
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;
Ji bo niha ev hemû.
Ez hêvî dikim ku kar balkêş û balkêş bûn.
Ez ê bi qasî ku gengaz be li vê navnîşa karan zêde bikim.
Ez ê jî kêfxweş bibim ku her şîrove û pêşniyaran werbigirim.
PS: Ger kesek bi karekî SELECT balkêş derkeve, di şîroveyan de binivîsîne û ez ê wê li navnîşê zêde bikim.
Sipî
Source: www.habr.com