I-SQL. Ama-puzzle ajabulisayo

Sawubona, Habr!

Sekuyiminyaka engaphezu kwengu-3 manje ngifundisa i-SQL ezikhungweni zokuqeqesha ezihlukahlukene, futhi okunye engikuqaphelayo ukuthi abafundi bayakwazi futhi baqonde kangcono i-SQL uma benikezwa umsebenzi, hhayi nje ukutshelwa ngamathuba nezisekelo zethiyori.

Kulesi sihloko, ngizokwabelana nawe ngohlu lwami lwezinkinga engizinikeza abafundi njengomsebenzi wesikole wesikole futhi lapho senza khona izinhlobo ezahlukene zezingxoxo, okuholela ekuqondeni okujulile nokucacile kwe-SQL.

I-SQL. Ama-puzzle ajabulisayo

I-SQL (ΛˆΙ›sˈkjuΛˆΙ›l; Ulimi lwemibuzo oluhlelekile lwesiNgisi) iwulimi lohlelo olumemezelayo olusetshenziselwa ukwakha, ukuguqula nokuphatha idatha kusizindalwazi esihlobene esiphethwe uhlelo olufanele lokuphathwa kwesizindalwazi. Funda kabanzi…

Ungafunda nge-SQL kusuka ezinhlobonhlobo imithombo.
Lesi sihloko asihloselwe ukukufundisa i-SQL kusukela ekuqaleni.

Ake sihambe.

Sizosebenzisa okwaziwayo Uhlelo lwe-HR e-Oracle namatafula ayo (Funda kabanzi):

I-SQL. Ama-puzzle ajabulisayo
Ngiyaqaphela ukuthi sizocubungula kuphela imisebenzi ethi KHETHA. Ayikho imisebenzi ye-DML noma ye-DDL lapha.

Imisebenzi

Ukukhawulela Nokuhlunga Idatha

Ithebula lezisebenzi. Thola uhlu olunolwazi ngabo bonke abasebenzi
Isixazululo

SELECT * FROM employees

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi okuthiwa 'David'
Isixazululo

SELECT *
  FROM employees
 WHERE first_name = 'David';

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abane- job_id elingana ne-'IT_PROG'
Isixazululo

SELECT *
  FROM employees
 WHERE job_id = 'IT_PROG'

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezivela emnyangweni wama-50 (umnyango_id) ezineholo (iholo) elingaphezu kuka-4000
Isixazululo

SELECT *
  FROM employees
 WHERE department_id = 50 AND salary > 4000;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezivela emnyangweni wama-20 nowama-30 (umnyango_id)
Isixazululo

SELECT *
  FROM employees
 WHERE department_id = 20 OR department_id = 30;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinohlamvu lokugcina olusegameni elithi 'a'
Isixazululo

SELECT *
  FROM employees
 WHERE first_name LIKE '%a';

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezivela emnyangweni wama-50 nowama-80 (umnyango_id) ezinebhonasi (inani elikukholomu ye-commission_pct alinalutho)
Isixazululo

SELECT *
  FROM employees
 WHERE     (department_id = 50 OR department_id = 80)
       AND commission_pct IS NOT NULL;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi amagama abo aqukethe okungenani izinhlamvu ezi-2 'n'
Isixazululo

SELECT *
  FROM employees
 WHERE first_name LIKE '%n%n%';

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi amagama azo amade kunezinhlamvu ezi-4
Isixazululo

SELECT *
  FROM employees
 WHERE first_name LIKE '%_____%';

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abamholo wabo osuka ku-8000 kuye ku-9000 (okuhlanganisayo)
Isixazululo

SELECT *
  FROM employees
 WHERE salary BETWEEN 8000 AND 9000;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abagama labo liqukethe uphawu '%'
Isixazululo

SELECT *
  FROM employees
 WHERE first_name LIKE '%%%' ESCAPE '';

Ithebula lezisebenzi. Thola uhlu lwabo bonke omazisi abaphathi
Isixazululo

SELECT DISTINCT manager_id
  FROM employees
 WHERE manager_id IS NOT NULL;

Ithebula lezisebenzi. Thola uhlu lwabasebenzi abanezikhundla zabo ngefomethi: Donald(sh_clerk)
Isixazululo

SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;

Ukusebenzisa Imisebenzi Yomugqa Owodwa Ukwenza Ngokwezifiso Okukhiphayo

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi amagama azo amade kunezinhlamvu ezi-10
Isixazululo

SELECT *
  FROM employees
 WHERE LENGTH (first_name) > 10;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinohlamvu u-'b' emagameni azo (akezwa lutho)
Isixazululo

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name), 'b') > 0;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi amagama abo aqukethe okungenani izinhlamvu ezi-2 'a'
Isixazululo

SELECT *
  FROM employees
 WHERE INSTR (LOWER (first_name),'a',1,2) > 0;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinamaholo aphindwe kayi-1000
Isixazululo

SELECT *
  FROM employees
 WHERE MOD (salary, 1000) = 0;

Ithebula lezisebenzi. Thola inombolo yokuqala yamadijithi angu-3 yenombolo yocingo yomsebenzi uma inombolo yakhe ikufomethi ethi XXX.XXX.XXXX
Isixazululo

SELECT phone_number, SUBSTR (phone_number, 1, 3) new_phone_number
  FROM employees
 WHERE phone_number LIKE '___.___.____';

Ithebula leminyango. Thola igama lokuqala egameni lomnyango kulabo abanamagama angaphezu kwelilodwa egameni
Isixazululo

SELECT department_name,
       SUBSTR (department_name, 1, INSTR (department_name, ' ')-1)
           first_word
  FROM departments
 WHERE INSTR (department_name, ' ') > 0;

Ithebula lezisebenzi. Thola amagama abasebenzi ngaphandle kohlamvu lokuqala nelokugcina egameni
Isixazululo

SELECT first_name, SUBSTR (first_name, 2, LENGTH (first_name) - 2) new_name
  FROM employees;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinohlamvu lokugcina emagameni azo u-'m' futhi ogama lazo lide kuno-5
Isixazululo

SELECT *
  FROM employees
 WHERE SUBSTR (first_name, -1) = 'm' AND LENGTH(first_name)>5;

Ithebula Elikabili. Thola idethi elandelayo yangoLwesihlanu
Isixazululo

SELECT NEXT_DAY (SYSDATE, 'FRIDAY') next_friday FROM DUAL;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi asebesebenzele inkampani iminyaka engaphezu kwe-17
Isixazululo

SELECT *
  FROM employees
 WHERE MONTHS_BETWEEN (SYSDATE, hire_date) / 12 > 17;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinedijithi yazo yokugcina yenombolo yocingo yazo eyinqaba futhi iqukethe izinombolo ezi-3 ezihlukaniswe ichashazi.
Isixazululo

SELECT *
  FROM employees
 WHERE     MOD (SUBSTR (phone_number, -1), 2) != 0
       AND INSTR (phone_number,'.',1,3) = 0;

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezinenani le- job_id ngemva kophawu '_' elinezinhlamvu okungenani ezingu-3, ​​kodwa leli nani ngemva kwe-'_' alilingani nokuthi 'CLERK'
Isixazululo

SELECT *
  FROM employees
 WHERE     LENGTH (SUBSTR (job_id, INSTR (job_id, '_') + 1)) > 3
       AND SUBSTR (job_id, INSTR (job_id, '_') + 1) != 'CLERK';

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi ngokufaka esikhundleni sabo bonke '.' kunani elingu-PHONE_NUMBER ku-'-'
Isixazululo

SELECT phone_number, REPLACE (phone_number, '.', '-') new_phone_number
  FROM employees;

Ukusebenzisa Imisebenzi Yokuguqula kanye Nezinkulumo ezinemibandela

Ithebula lezisebenzi. Thola uhlu lwazo zonke izisebenzi ezize emsebenzini ngosuku lokuqala lwenyanga (noma yiziphi)
Isixazululo

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'DD') = '01';

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abeza ukuzosebenza ngo-2008
Isixazululo

SELECT *
  FROM employees
 WHERE TO_CHAR (hire_date, 'YYYY') = '2008';

Ithebula DUAL. Bonisa idethi yakusasa ngefomethi: Kusasa usuku Lwesibili lukaJanuwari
Isixazululo

SELECT TO_CHAR (SYSDATE, 'fm""Tomorrow is ""Ddspth ""day of"" Month')     info
  FROM DUAL;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi kanye nosuku isisebenzi ngasinye safika ngaso emsebenzini ngefomethi: 21st of June, 2007
Isixazululo

SELECT first_name, TO_CHAR (hire_date, 'fmddth ""of"" Month, YYYY') hire_date
  FROM employees;

Ithebula lezisebenzi. Thola uhlu lwabasebenzi abanyuswe amaholo ngo-20%. Bonisa iholo elinophawu lwedola
Isixazululo

SELECT first_name, TO_CHAR (salary + salary * 0.20, 'fm$999,999.00') new_salary
  FROM employees;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abaqale ukusebenza ngoFebhuwari 2007.
Isixazululo

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'; 

Ithebula DUAL. Khipha idethi yamanje, + yesibili, + iminithi, + ihora, + usuku, + inyanga, + unyaka
Isixazululo

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;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi abanemiholo egcwele (umholo + commission_pct(%)) ngefomethi: $24,000.00
Isixazululo

SELECT first_name, salary, TO_CHAR (salary + salary * NVL (commission_pct, 0), 'fm$99,999.00') full_salary
  FROM employees;

Ithebula lezisebenzi. Thola uhlu lwabo bonke abasebenzi kanye nolwazi mayelana nokutholakala kwamabhonasi omholo (Yebo/Cha)
Isixazululo

SELECT first_name, commission_pct, NVL2 (commission_pct, 'Yes', 'No') has_bonus
  FROM employees;

Ithebula lezisebenzi. Thola izinga lomholo lesisebenzi ngasinye: Ngaphansi kuka-5000 kuthathwa njengezinga eliphansi, Okukhulu noma kulingana no-5000 futhi ngaphansi kuka-10000 kuthathwa njengezinga Elivamile, Ngaphezu noma elilingana ne-10000 kuthathwa njengezinga eliphezulu.
Isixazululo

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;

Amazwe Amathebula. Ezweni ngalinye, bonisa isifunda lapho itholakala khona: 1-Europe, 2-America, 3-Asia, 4-Africa (ngaphandle Joyina)
Isixazululo

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;

Ukubika Idatha Ehlanganisiwe Ngokusebenzisa Imisebenzi Yeqembu

Ithebula lezisebenzi. Thola umbiko nge-department_id oneholo elincane neliwumkhawulo, izinsuku zokufika ngaphambi kwesikhathi nezakamuva zokufika emsebenzini kanye nenani labasebenzi. Hlunga ngenombolo yabasebenzi (beyehla)
Isixazululo

  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;

Ithebula lezisebenzi. Bangaki abasebenzi amagama abo aqala ngohlamvu olufanayo? Hlunga ngobuningi. Bonisa kuphela lawo lapho inani likhulu kuno-1
Isixazululo

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;

Ithebula lezisebenzi. Bangaki abasebenzi abasebenza emnyangweni owodwa futhi abathola iholo elifanayo?
Isixazululo

SELECT department_id, salary, COUNT (*)
    FROM employees
GROUP BY department_id, salary
  HAVING COUNT (*) > 1;

Ithebula lezisebenzi. Thola umbiko wokuthi bangaki abasebenzi abaqashwe ngosuku ngalunye lwesonto. Hlunga ngobuningi
Isixazululo

SELECT TO_CHAR (hire_Date, 'Day') day, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_Date, 'Day')
ORDER BY 2 DESC;

Ithebula lezisebenzi. Thola umbiko wokuthi bangaki abasebenzi abaqashwe ngonyaka. Hlunga ngobuningi
Isixazululo

SELECT TO_CHAR (hire_date, 'YYYY') year, COUNT (*)
    FROM employees
GROUP BY TO_CHAR (hire_date, 'YYYY');

Ithebula lezisebenzi. Thola inani leminyango enabasebenzi
Isixazululo

SELECT COUNT (COUNT (*))     department_count
    FROM employees
   WHERE department_id IS NOT NULL
GROUP BY department_id;

Ithebula lezisebenzi. Thola uhlu lwama-department_id anabasebenzi abangaphezu kuka-30
Isixazululo

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (*) > 30;

Ithebula lezisebenzi. Thola uhlu lwama-department_id kanye ne-avareji yeholo labasebenzi emnyangweni ngamunye.
Isixazululo

  SELECT department_id, ROUND (AVG (salary)) avg_salary
    FROM employees
GROUP BY department_id;

Amazwe Amathebula. Thola uhlu lwesifunda_id isamba sazo zonke izinhlamvu zawo wonke amazwe_amagama lapho kukhona angaphezu kuka-60
Isixazululo

  SELECT region_id
    FROM countries
GROUP BY region_id
  HAVING SUM (LENGTH (country_name)) > 60;

Ithebula lezisebenzi. Thola uhlu lwama-department_id lapho izisebenzi ze- job_id ezimbalwa (>1) zisebenza khona
Isixazululo

  SELECT department_id
    FROM employees
GROUP BY department_id
  HAVING COUNT (DISTINCT job_id) > 1;

Ithebula lezisebenzi. Thola uhlu lwama-manager_id anenani labasebenzi abangaphansi kwalo lingaphezu kuka-5 futhi inani lawo wonke amaholo alabo abangaphansi kwakhe lingaphezu kuka-50000
Isixazululo

  SELECT manager_id
    FROM employees
GROUP BY manager_id
  HAVING COUNT (*) > 5 AND SUM (salary) > 50000;

Ithebula lezisebenzi. Thola uhlu lwama-manager_ids umholo wawo omaphakathi wabo bonke abangaphansi kwakhe usebangeni elisuka ku-6000 kuye ku-9000 futhi abangawatholi amabhonasi (i-commission_pct ayinalutho)
Isixazululo

  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;

Ithebula lezisebenzi. Thola iholo eliphezulu kubo bonke abasebenzi job_id egcina ngegama elithi 'CLERK'
Isixazululo

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';

Ithebula lezisebenzi. Thola iholo eliphezulu phakathi kwawo wonke amaholo amaphakathi omnyango
Isixazululo

  SELECT MAX (AVG (salary))
    FROM employees
GROUP BY department_id;

Ithebula lezisebenzi. Thola inombolo yezisebenzi ezinenombolo efanayo yezinhlamvu egameni labo. Ngesikhathi esifanayo, bonisa kuphela labo ubude bamagama abo bungaphezu kuka-5 kanye nenani labasebenzi abanegama elifanayo lingaphezu kwama-20. Hlunga ngobude bamagama
Isixazululo

  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);

Ibonisa Idatha Kumathebula Amaningi Kusetshenziswa Ukujoyina

Ithebula Abasebenzi, Iminyango, Izindawo, Amazwe, Izifunda. Thola uhlu lwezifunda kanye nenani labasebenzi esifundeni ngasinye
Isixazululo

  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;

Ithebula Abasebenzi, Iminyango, Izindawo, Amazwe, Izifunda. Thola ulwazi oluningiliziwe mayelana nomsebenzi ngamunye:
Igama_lokuqala, Isibongo, Umnyango, Umsebenzi, Umgwaqo, Izwe, Isifunda
Isixazululo

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);

Ithebula lezisebenzi. Bonisa bonke abaphathi abanabasebenzi abangaphezu kuka-6 abangaphansi kwabo
Isixazululo

  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;

Ithebula lezisebenzi. Bonisa bonke abasebenzi abangabiki kunoma ubani
Isixazululo

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;

Izisebenzi Zethebula, Umlando_wemisebenzi. Itafula labasebenzi ligcina bonke abasebenzi. Ithebula le-Job_history ligcina abasebenzi abashiye inkampani. Thola umbiko mayelana nabo bonke abasebenzi kanye nesimo sabo enkampanini (Isebenza noma ishiye inkampani nosuku lokuhamba)
Isibonelo:
igama_lokuqala | isimo
Jennifer | Ushiye inkampani ngomhla zingama-31 kuZibandlela, 2006
Clara | Okwamanje Iyasebenza
Isixazululo

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);

Ithebula Abasebenzi, Iminyango, Izindawo, Amazwe, Izifunda. Thola uhlu lwabasebenzi abahlala e-Europe (region_name)
Isixazululo

 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';

Abasebenzi basetafuleni, iminyango. Bonisa yonke iminyango enabasebenzi abangaphezu kuka-30
Isixazululo

SELECT department_name, COUNT (*)
    FROM employees e JOIN departments d ON (e.department_id = d.department_id)
GROUP BY department_name
  HAVING COUNT (*) > 30;

Abasebenzi basetafuleni, iminyango. Bonisa bonke abasebenzi abangekho kunoma yimuphi umnyango
Isixazululo

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;

Abasebenzi basetafuleni, iminyango. Bonisa yonke iminyango engenabasebenzi kuyo
Isixazululo

SELECT department_name
  FROM employees  e
       RIGHT JOIN departments d ON (e.department_id = d.department_id)
 WHERE first_name IS NULL;

Ithebula lezisebenzi. Bonisa bonke abasebenzi abangenaye umuntu ongaphansi kwabo
Isixazululo

SELECT man.first_name
  FROM employees  emp
       RIGHT JOIN employees man ON (emp.manager_id = man.employee_id)
 WHERE emp.FIRST_NAME IS NULL;

Abasebenzi basetafuleni, Imisebenzi, Iminyango. Bonisa abasebenzi ngefomethi: First_name, Job_title, Department_name.
Isibonelo:
Igama_lokuqala | Isihloko_somsebenzi | Igama_lomnyango
Donald | Ukuthumela | Umabhalane Shipping
Isixazululo

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);

Ithebula lezisebenzi. Thola uhlu lwabasebenzi abaphathi babo abathola umsebenzi ngo-2005, kodwa ngesikhathi esifanayo laba basebenzi bathola umsebenzi ngaphambi kuka-2005.
Isixazululo

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');

Ithebula lezisebenzi. Thola uhlu lwezisebenzi abaphathi bazo abathole umsebenzi ngoJanuwari wanoma yimuphi unyaka futhi ubude be-job_title balaba basebenzi bungaphezu kwezinhlamvu ezingu-15
Isixazululo

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;

Ukusebenzisa i-Subqueries ukuxazulula imibuzo

Ithebula lezisebenzi. Thola uhlu lwezisebenzi ezinegama elide kakhulu.
Isixazululo

SELECT *
  FROM employees
 WHERE LENGTH (first_name) =
       (SELECT MAX (LENGTH (first_name)) FROM employees);

Ithebula lezisebenzi. Thola uhlu lwezisebenzi ezineholo elikhulu kunesilinganiso seholo labo bonke abasebenzi.
Isixazululo

SELECT *
  FROM employees
 WHERE salary > (SELECT AVG (salary) FROM employees);

Abasebenzi, iminyango, ithebula lezindawo. Thola idolobha lapho abasebenzi sebebonke bahola kancane.
Isixazululo

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);

Ithebula lezisebenzi. Thola uhlu lwabasebenzi abaphathi babo abathola iholo elingaphezu kuka-15000.
Isixazululo

SELECT *
  FROM employees
 WHERE manager_id IN (SELECT employee_id
                        FROM employees
                       WHERE salary > 15000)

Abasebenzi basetafuleni, iminyango. Bonisa yonke iminyango engenabasebenzi kuyo
Isixazululo

SELECT *
  FROM departments
 WHERE department_id NOT IN (SELECT department_id
                               FROM employees
                              WHERE department_id IS NOT NULL);

Ithebula lezisebenzi. Bonisa bonke abasebenzi abangebona abaphathi
Isixazululo

SELECT *
  FROM employees
 WHERE employee_id NOT IN (SELECT manager_id
                             FROM employees
                            WHERE manager_id IS NOT NULL)

Ithebula lezisebenzi. Bonisa bonke abaphathi abanabasebenzi abangaphezu kuka-6 abangaphansi kwabo
Isixazululo

SELECT *
  FROM employees e
 WHERE (SELECT COUNT (*)
          FROM employees
         WHERE manager_id = e.employee_id) > 6;

Abasebenzi basetafuleni, iminyango. Bonisa abasebenzi abasebenza emnyangweni we-IT
Isixazululo

SELECT *
  FROM employees
 WHERE department_id = (SELECT department_id
                          FROM departments
                         WHERE department_name = 'IT');

Abasebenzi basetafuleni, Imisebenzi, Iminyango. Bonisa abasebenzi ngefomethi: First_name, Job_title, Department_name.
Isibonelo:
Igama_lokuqala | Isihloko_somsebenzi | Igama_lomnyango
Donald | Ukuthumela | Umabhalane Shipping
Isixazululo

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;

Ithebula lezisebenzi. Thola uhlu lwabasebenzi abaphathi babo abathola umsebenzi ngo-2005, kodwa ngesikhathi esifanayo laba basebenzi bathola umsebenzi ngaphambi kuka-2005.
Isixazululo

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');

Ithebula lezisebenzi. Thola uhlu lwezisebenzi abaphathi bazo abathole umsebenzi ngoJanuwari wanoma yimuphi unyaka futhi ubude be-job_title balaba basebenzi bungaphezu kwezinhlamvu ezingu-15
Isixazululo

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;

Yilokho kuphela okwamanje.

Ngethemba ukuthi imisebenzi ibithakazelisa futhi ijabulisa.
Ngizokwengeza kulolu hlu lwemisebenzi ngangokunokwenzeka.
Ngizophinde ngijabule ukwamukela noma yimiphi imibono neziphakamiso.

I-PS: Uma othile eza nomsebenzi othakazelisayo KHETHA, bhala kumazwana futhi ngizowengeza ohlwini.

Бпасибо.

Source: www.habr.com

Engeza amazwana