ሰላም ሀብር!
ከ 3 ዓመታት በላይ SQLን በተለያዩ የስልጠና ማዕከላት እያስተማርኩ ቆይቻለሁ፣ አንዱ ምልከታዬ ተማሪዎቹ ስራ ከተሰጣቸው SQL በደንብ እንዲያውቁ እና እንዲረዱት እንጂ ስለ ዕድሎች እና ስለ ቲዎሬቲካል መሠረቶች ብቻ መናገር ብቻ አይደለም።
በዚህ ጽሁፍ ለተማሪዎች እንደ የቤት ስራ የምሰጣቸውን እና የተለያዩ አይነት የሃሳብ ማወዛወዝን የምንመራባቸውን ስራዎች ዝርዝሬን አካፍላችኋለሁ ይህም ስለ SQL ጥልቅ እና ግልጽ ግንዛቤን ያመጣል።
SQL ( ˈɛsˈkjuˈɛl ፤ ኢንጂነር የተዋቀረ የመጠይቅ ቋንቋ) በተገቢው የውሂብ ጎታ አስተዳደር ስርዓት በሚተዳደረው ተዛማጅ ዳታቤዝ ውስጥ መረጃን ለመፍጠር ፣ ለማሻሻል እና ለማስተዳደር የሚያገለግል ገላጭ የፕሮግራሚንግ ቋንቋ ነው።
ስለ SQL ከተለያዩ ማንበብ ይችላሉ።
ይህ ጽሑፍ 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