SQL አዝናኝ እንቆቅልሾች

ሰላም ሀብር!

ከ 3 ዓመታት በላይ SQLን በተለያዩ የስልጠና ማዕከላት እያስተማርኩ ቆይቻለሁ፣ አንዱ ምልከታዬ ተማሪዎቹ ስራ ከተሰጣቸው SQL በደንብ እንዲያውቁ እና እንዲረዱት እንጂ ስለ ዕድሎች እና ስለ ቲዎሬቲካል መሠረቶች ብቻ መናገር ብቻ አይደለም።

በዚህ ጽሁፍ ለተማሪዎች እንደ የቤት ስራ የምሰጣቸውን እና የተለያዩ አይነት የሃሳብ ማወዛወዝን የምንመራባቸውን ስራዎች ዝርዝሬን አካፍላችኋለሁ ይህም ስለ SQL ጥልቅ እና ግልጽ ግንዛቤን ያመጣል።

SQL አዝናኝ እንቆቅልሾች

SQL ( ˈɛsˈkjuˈɛl ፤ ኢንጂነር የተዋቀረ የመጠይቅ ቋንቋ) በተገቢው የውሂብ ጎታ አስተዳደር ስርዓት በሚተዳደረው ተዛማጅ ዳታቤዝ ውስጥ መረጃን ለመፍጠር ፣ ለማሻሻል እና ለማስተዳደር የሚያገለግል ገላጭ የፕሮግራሚንግ ቋንቋ ነው። ተጨማሪ ያንብቡ…

ስለ SQL ከተለያዩ ማንበብ ይችላሉ። ምንጮች.
ይህ ጽሑፍ SQL ከባዶ ለማስተማር የታሰበ አይደለም።

ስለዚህ እንሂድ ፡፡

የታወቁትን እንጠቀማለን የሰው ኃይል እቅድ በ Oracle ከጠረጴዛዎቹ ጋር (ይበልጥ):

SQL አዝናኝ እንቆቅልሾች
በ SELECT ላይ ስራዎችን ብቻ እንደምናስብ አስተውያለሁ. በዲኤምኤል እና ዲኤልኤል ላይ ምንም ተግባራት የሉም።

ተግባራት

ውሂብን መገደብ እና መደርደር

የሰራተኞች ጠረጴዛ. ስለ ሁሉም ሰራተኞች መረጃ የያዘ ዝርዝር ያግኙ
ዉሳኔ

SELECT * FROM employees

የሰራተኞች ጠረጴዛ. 'ዴቪድ' የሚባሉትን ሁሉንም ሰራተኞች ዝርዝር አግኝ
ዉሳኔ

SELECT *
  FROM employees
 WHERE first_name = 'David';

የሰራተኞች ጠረጴዛ. ከ'IT_PROG' ጋር እኩል የሆነ የስራ_መታወቂያ ያላቸው ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

SELECT *
  FROM employees
 WHERE job_id = 'IT_PROG'

የሰራተኞች ጠረጴዛ. ከ 50 ኛ ክፍል (መምሪያ_መታወቂያ) ከ 4000 በላይ ደመወዝ (ደመወዝ) የሁሉም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ20ኛው እና ከ30ኛ ዲፓርትመንት (መምሪያ_መ) የሰራተኞችን ዝርዝር ያግኙ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የመጨረሻው ደብዳቤ በስማቸው 'ሀ' የሆነ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ50ኛው እና ከ80ኛ ዲፓርትመንት (መምሪያ_አይዲ) ጉርሻ ያላቸውን ሁሉንም ሰራተኞች ዝርዝር ያግኙ (በኮሚሽኑ_pct አምድ ውስጥ ያለው ዋጋ ባዶ አይደለም)
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ስማቸው ቢያንስ 2 ፊደሎችን 'n' የያዘ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ስማቸው ከ 4 ፊደላት በላይ የሆኑ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ደመወዛቸው ከ8000 እስከ 9000 (ያካተተ) ያለውን ሁሉንም ሰራተኞች ዝርዝር ያግኙ።
ዉሳኔ

SELECT *
  FROM employees
 WHERE salary BETWEEN 8000 AND 9000;

የሰራተኞች ጠረጴዛ. ስማቸው '%' ምልክት የያዘ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ሁሉንም የአስተዳዳሪ መታወቂያዎችን ዝርዝር ያግኙ
ዉሳኔ

SELECT DISTINCT manager_id
  FROM employees
 WHERE manager_id IS NOT NULL;

የሰራተኞች ጠረጴዛ. የሰራተኞቻቸውን ዝርዝር በቅርጸት ያግኙ፡ ዶናልድ(sh_clerk)
ዉሳኔ

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

ውፅዓትን ለማበጀት ነጠላ-ረድፍ ተግባራትን መጠቀም

የሰራተኞች ጠረጴዛ. ስማቸው ከ 10 ፊደላት በላይ የሆኑ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በስማቸው 'ለ' የሚል ፊደል ያላቸዉን ሁሉንም ሰራተኞች ዝርዝር አግኝ (ጉዳይ የማይሰማ)
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ስማቸው ቢያንስ 2 ፊደሎችን 'a' የያዘ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ደመወዛቸው የ1000 ብዜት የሆኑ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ቁጥሩ ХХХ.ХХХ.ХХХХ ቅርጸት ከሆነ የሰራተኛውን የመጀመሪያ ባለ 3-አሃዝ ቁጥር ያግኙ
ዉሳኔ

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

የመምሪያዎች ጠረጴዛ. በስሙ ውስጥ ከአንድ በላይ ቃል ላላቸው ከመምሪያው ስም የመጀመሪያውን ቃል ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በስሙ ውስጥ ያለ የመጀመሪያ እና የመጨረሻ ፊደል የሰራተኛ ስሞችን ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በስሙ ውስጥ ያለው የመጨረሻ ፊደላቸው 'm' ጋር እኩል የሆነ እና የስሙ ርዝመት ከ 5 በላይ የሆኑ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

ድርብ ጠረጴዛ. የሚቀጥለውን አርብ ቀን ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ17 ዓመታት በላይ ከኩባንያው ጋር የቆዩትን ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የስልክ ቁጥራቸው የመጨረሻ አሃዝ ያልተለመደ እና በነጥብ የተለዩ 3 ቁጥሮችን ያቀፈ ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ'_' ምልክት በኋላ የስራ_መታወቂያ ዋጋቸው ቢያንስ 3 ቁምፊዎች ያላቸውን ሁሉንም ሰራተኞች ዝርዝር ያግኙ፣ ነገር ግን ከ'_' በኋላ ያለው ዋጋ ከ'CLERK' ጋር እኩል አይደለም
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በPHONE_NUMBER እሴት ውስጥ ያሉትን ሁሉንም «.» በመተካት የሁሉም ሰራተኞች ዝርዝር ያግኙ ላይ '-'
ዉሳኔ

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

የልወጣ ተግባራትን እና ሁኔታዊ መግለጫዎችን መጠቀም

የሰራተኞች ጠረጴዛ. በወሩ የመጀመሪያ ቀን ወደ ሥራ የመጡትን ሁሉንም ሰራተኞች ዝርዝር ያግኙ (ማንኛውንም)
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በ 2008 ወደ ሥራ የመጡትን ሁሉንም ሰራተኞች ዝርዝር ያግኙ
ዉሳኔ

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

DUAL ሰንጠረዥ. የነገውን ቀን በቅርጸት አሳይ፡ ነገ ጥር ሁለተኛ ቀን ነው።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የሁሉንም ሰራተኞች ዝርዝር እና የሚጀምርበትን ቀን በቅርጸት፡ ሰኔ 21 ቀን 2007 ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በ 20% የጨመረ ደመወዝ ያላቸው ሰራተኞች ዝርዝር ያግኙ. ደሞዝ በዶላር ምልክት አሳይ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በየካቲት 2007 ወደ ሥራ የመጡትን ሁሉንም ሠራተኞች ዝርዝር ያግኙ።
ዉሳኔ

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 ሰንጠረዥ. የአሁኑን ቀን፣ + ሰከንድ፣ + ደቂቃ፣ + ሰዓት፣ + ቀን፣ + ወር፣ + ዓመት ወደ ውጭ ይላኩ።
ዉሳኔ

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;

የሰራተኞች ጠረጴዛ. ሙሉ ደመወዝ (ደመወዝ + commission_pct(%) ያላቸው ሁሉንም ሰራተኞች ዝርዝር በቅርጸት ያግኙ፡ $24,000.00
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የሁሉንም ሰራተኞች ዝርዝር እና የደመወዝ ጉርሻዎች ስለመኖሩ መረጃ ያግኙ (አዎ/አይ)
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የእያንዳንዱን ሰራተኛ የደመወዝ ደረጃ ያግኙ፡ ከ 5000 በታች ዝቅተኛ ደረጃ ይቆጠራል ከ 5000 የሚበልጠው ወይም እኩል እና ከ 10000 ያነሰ እንደ መደበኛ ደረጃ ይቆጠራል ከ 10000 በላይ ወይም እኩል ይሆናል ከፍተኛ ደረጃ ይቆጠራል.
ዉሳኔ

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;

የአገሮች ጠረጴዛ. ለእያንዳንዱ ሀገር፣ የሚገኝበትን ክልል ያሳዩ፡ 1-አውሮፓ፣ 2-አሜሪካ፣ 3-እስያ፣ 4-አፍሪካ (ያለ መቀላቀል)
ዉሳኔ

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;

የቡድን ተግባራትን በመጠቀም የተጠቃለለ መረጃን ሪፖርት ማድረግ

የሰራተኞች ጠረጴዛ. በትንሹ እና ከፍተኛ ደመወዝ፣ ቀደም እና ዘግይቶ የመድረሻ ቀን እና የሰራተኞች ብዛት ያለው በዲፓርት_መታወቂያ ሪፖርት ያግኙ። በሠራተኞች ብዛት ደርድር (ዲሴ)
ዉሳኔ

  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;

የሰራተኞች ጠረጴዛ. ስማቸው በአንድ ፊደል የሚጀምር ስንት ሠራተኞች? በብዛት ደርድር። ቁጥሩ ከ1 በላይ የሆኑትን ብቻ አሳይ
ዉሳኔ

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;

የሰራተኞች ጠረጴዛ. በአንድ ክፍል ውስጥ የሚሰሩ እና ተመሳሳይ ደመወዝ የሚቀበሉ ምን ያህል ሰራተኞች ናቸው?
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በእያንዳንዱ የሳምንቱ ቀን ምን ያህል ሰራተኞች እንደተቀጠሩ ሪፖርት ያግኙ። በብዛት ደርድር
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በአመት ምን ያህል ሰራተኞች እንደተቀጠሩ ሪፖርት ያግኙ። በብዛት ደርድር
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ሠራተኞች ያላቸውን ክፍሎች ብዛት ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ30 በላይ ሰራተኞች ያሉት የመምሪያ_መታወቂያ ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በእያንዳንዱ ክፍል ውስጥ የመምሪያ_መታወቂያዎች ዝርዝር እና የተጠጋጋ አማካይ የሰራተኞች ደሞዝ ያግኙ።
ዉሳኔ

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

የአገሮች ጠረጴዛ. ከ60 በላይ የሆኑ የሁሉም የሀገር_ስሞች የክልላዊ_መታወቂያ ድምር ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የበርካታ (>1) የስራ_id ሰራተኞች የሚሰሩበትን የመምሪያ_መታወቂያ ዝርዝር ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የበታች የበታች ቁጥራቸው ከ 5 በላይ የሆኑ እና የበታቾቹ የሁሉም ደሞዝ ድምር ከ50000 በላይ የሆነ የአስተዳዳሪ_መታወቂያ ዝርዝር ያግኙ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የሁሉም የበታች አስተዳዳሪዎች አማካኝ ደመወዛቸው ከ6000 እስከ 9000 የሚደርሱ ጉርሻዎችን የማይቀበሉ (ኮሚሽኑ_ፒሲት ባዶ ነው) የአስተዳዳሪ_መታወቂያ ዝርዝር ያግኙ።
ዉሳኔ

  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;

የሰራተኞች ጠረጴዛ. ከሁሉም ሰራተኞች ከፍተኛውን ደመወዝ ያግኙ job_id 'CLERK' በሚለው ቃል የሚያልቅ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከሁሉም አማካኝ ደመወዝ መካከል ከፍተኛውን ደሞዝ ያግኙ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በስማቸው ተመሳሳይ ፊደላት ያላቸውን የሰራተኞች ብዛት ያግኙ። በተመሳሳይ ጊዜ ስማቸው ከ 5 በላይ የሆኑትን እና ተመሳሳይ ስም ያላቸው ሰራተኞች ቁጥር ከ 20 በላይ የሆኑትን ብቻ አሳይ. በስም ርዝመት ደርድር.
ዉሳኔ

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

መጋጠሚያዎችን በመጠቀም ከብዙ ሰንጠረዦች መረጃን በማሳየት ላይ

የጠረጴዛ ሰራተኞች, ክፍሎች, ቦታዎች, አገሮች, ክልሎች. በእያንዳንዱ ክልል ውስጥ የክልሎች ዝርዝር እና የሰራተኞች ብዛት ያግኙ
ዉሳኔ

  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;

የጠረጴዛ ሰራተኞች, ክፍሎች, ቦታዎች, አገሮች, ክልሎች. ስለ እያንዳንዱ ሰራተኛ ዝርዝር መረጃ ያግኙ፡-
የመጀመሪያ_ስም ፣ የአያት_ስም ፣ ክፍል ፣ ስራ ፣ ጎዳና ፣ ሀገር ፣ ክልል
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ6 በላይ ሰራተኞች ያላቸውን ሁሉንም አስተዳዳሪዎች አሳይ
ዉሳኔ

  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;

የሰራተኞች ጠረጴዛ. ለማንም የማይዘግቡ ሁሉንም ሰራተኞች ያሳዩ
ዉሳኔ

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;

የሰራተኞች ሰንጠረዥ፣ የስራ_ታሪክ። የሰራተኛው ጠረጴዛ ሁሉንም ሰራተኞች ያከማቻል. የስራ ታሪክ ሰንጠረዥ ኩባንያውን ለቀው የወጡ ሰራተኞችን ያከማቻል። ስለ ሁሉም ሰራተኞች እና በኩባንያው ውስጥ ስላላቸው ሁኔታ ሪፖርት ያግኙ (የተቀጠሩ ወይም ኩባንያውን የለቀቁበት የመነሻ ቀን)
ለምሳሌ:
የመጀመሪያ_ስም | ሁኔታ
ጄኒፈር | ድርጅቱን በታህሳስ 31 ቀን 2006 ለቋል
ክላራ | በአሁኑ ጊዜ በመስራት ላይ
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች, ቦታዎች, አገሮች, ክልሎች. በአውሮፓ የሚኖሩ የሰራተኞች ዝርዝር ያግኙ (ክልል_ስም)
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች. ከ30 በላይ ሰራተኞች ያሏቸውን ሁሉንም ክፍሎች አሳይ
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች. በማንኛውም ክፍል ውስጥ የሌሉ ሁሉንም ሰራተኞች አሳይ
ዉሳኔ

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;

የጠረጴዛ ሰራተኞች, ክፍሎች. ምንም ሰራተኛ የሌላቸውን ሁሉንም ክፍሎች አሳይ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. የበታች ሰራተኞች የሌላቸውን ሁሉንም ሰራተኞች አሳይ
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ስራዎች, ክፍሎች. ሰራተኞችን በቅርጸት አሳይ፡ የመጀመሪያ ስም፣ የስራ ርዕስ፣ የመምሪያው_ስም
ለምሳሌ:
የመጀመሪያ_ስም | የስራ መጠሪያ | የመምሪያው_ስም
ዶናልድ | መላኪያ | ጸሐፊ መላኪያ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. እ.ኤ.አ. በ 2005 አስተዳዳሪዎቻቸው ሥራ ያገኙ ሠራተኞችን ዝርዝር ያግኙ ፣ ግን በተመሳሳይ ጊዜ እነዚህ ሠራተኞች እራሳቸው ከ 2005 በፊት ሥራ አግኝተዋል ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በማንኛውም አመት በጥር ወር አስተዳዳሪዎቻቸው ስራ ያገኙ ሰራተኞችን ዝርዝር እና የእነዚህ ሰራተኞች የስራ ማዕረግ ርዝመት ከ15 ቁምፊዎች በላይ ያግኙ
ዉሳኔ

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;

ጥያቄዎችን ለመፍታት ንዑስ መጠይቆችን መጠቀም

የሰራተኞች ጠረጴዛ. ረጅሙ ስም ያላቸውን ሰራተኞች ዝርዝር ያግኙ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከሁሉም ሰራተኞች አማካይ ደሞዝ የሚበልጥ ደመወዝ ያላቸው የሰራተኞች ዝርዝር ያግኙ።
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች, ቦታዎች. ሰራተኞቹ በአጠቃላይ አነስተኛ ገቢ የሚያገኙበትን ከተማ ያግኙ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ሥራ አስኪያጁ ከ15000 በላይ ደሞዝ የሚያገኙ ሠራተኞችን ዝርዝር ያግኙ።
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች. ምንም ሰራተኛ የሌላቸውን ሁሉንም ክፍሎች አሳይ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. አስተዳዳሪ ያልሆኑትን ሁሉንም ሰራተኞች አሳይ
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. ከ6 በላይ ሰራተኞች ያላቸውን ሁሉንም አስተዳዳሪዎች አሳይ
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ክፍሎች. በአይቲ ክፍል ውስጥ የሚሰሩ ሰራተኞችን አሳይ
ዉሳኔ

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

የጠረጴዛ ሰራተኞች, ስራዎች, ክፍሎች. ሰራተኞችን በቅርጸት አሳይ፡ የመጀመሪያ ስም፣ የስራ ርዕስ፣ የመምሪያው_ስም
ለምሳሌ:
የመጀመሪያ_ስም | የስራ መጠሪያ | የመምሪያው_ስም
ዶናልድ | መላኪያ | ጸሐፊ መላኪያ
ዉሳኔ

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;

የሰራተኞች ጠረጴዛ. እ.ኤ.አ. በ 2005 አስተዳዳሪዎቻቸው ሥራ ያገኙ ሠራተኞችን ዝርዝር ያግኙ ፣ ግን በተመሳሳይ ጊዜ እነዚህ ሠራተኞች እራሳቸው ከ 2005 በፊት ሥራ አግኝተዋል ።
ዉሳኔ

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

የሰራተኞች ጠረጴዛ. በማንኛውም አመት በጥር ወር አስተዳዳሪዎቻቸው ስራ ያገኙ ሰራተኞችን ዝርዝር እና የእነዚህ ሰራተኞች የስራ ማዕረግ ርዝመት ከ15 ቁምፊዎች በላይ ያግኙ
ዉሳኔ

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;

ለጊዜው ይሄው ነው.

ተግባሮቹ አስደሳች እና አስደሳች እንደሆኑ ተስፋ አደርጋለሁ።
በተቻለ መጠን ወደዚህ ዝርዝር እጨምራለሁ.
ለማንኛውም አስተያየት እና አስተያየት ደስተኛ ነኝ.

PS: አንድ ሰው በ SELECT ላይ አንድ አስደሳች ተግባር ካመጣ, በአስተያየቶቹ ውስጥ ይፃፉ, ወደ ዝርዝሩ እጨምራለሁ.

እናመሰግናለን.

ምንጭ: hab.com

አስተያየት ያክሉ