هيلو، حبر!
ھاڻي 3 سالن کان وڌيڪ عرصي کان مان مختلف تربيتي مرڪزن ۾ SQL سيکاريندو رھيو آھيان، ۽ منھنجو ھڪڙو مشاهدو اھو آھي ته شاگرد SQL کي بھتر سمجھندا آھن ۽ سمجھندا آھن جيڪڏھن کين ڪو ٽاسڪ ڏنو وڃي، ۽ رڳو امڪانن ۽ نظرياتي بنيادن بابت ٻڌايو وڃي.
هن آرٽيڪل ۾، مان توهان سان پنهنجي مسئلن جي لسٽ شيئر ڪندس جيڪي آئون شاگردن کي هوم ورڪ جي طور تي ڏيان ٿو ۽ جن تي اسان مختلف قسم جا دماغي طوفان هلايون ٿا، جيڪي SQL جي تمام گهڻي ۽ واضح سمجهه تائين پهچن ٿا.
SQL (ˈɛsˈkjuˈɛl؛ انگريزي structured query language) هڪ بياني پروگرامنگ ٻولي آهي جيڪا هڪ مناسب ڊيٽابيس مينيجمينٽ سسٽم پاران منظم ڪيل تعلقي ڊيٽابيس ۾ ڊيٽا کي ٺاهڻ، تبديل ڪرڻ ۽ منظم ڪرڻ لاءِ استعمال ڪئي ويندي آهي.
توهان مختلف مان SQL بابت پڙهي سگهو ٿا
هي آرٽيڪل توهان کي شروع کان SQL سيکارڻ جو ارادو ناهي.
سو اچو ته هلون.
اسان چڱي طرح استعمال ڪنداسين
مان نوٽ ڪريان ٿو ته اسان صرف SELECT ڪمن تي غور ڪنداسين. هتي ڪوبه DML يا DDL ڪم نه آهي.
ڪمن
ڊيٽا کي محدود ڪرڻ ۽ ترتيب ڏيڻ
ملازمن جي ٽيبل. سڀني ملازمن جي باري ۾ معلومات سان هڪ فهرست حاصل ڪريو
فيصلو
SELECT * FROM employees
ملازمن جي ٽيبل. 'دائود' نالي سڀني ملازمن جي لسٽ حاصل ڪريو
فيصلو
SELECT *
FROM employees
WHERE first_name = 'David';
ملازمن جي ٽيبل. سڀني ملازمن جي لسٽ حاصل ڪريو job_id سان 'IT_PROG' جي برابر
فيصلو
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
ملازمن جي ٽيبل. 50هين ڊپارٽمينٽ (department_id) مان سڀني ملازمن جي لسٽ حاصل ڪريو جن جي تنخواه (تنخواه) 4000 کان وڌيڪ آهي
فيصلو
SELECT *
FROM employees
WHERE department_id = 50 AND salary > 4000;
ملازمن جي ٽيبل. 20 ۽ 30 هين ڊپارٽمينٽ مان سڀني ملازمن جي لسٽ حاصل ڪريو (department_id)
فيصلو
SELECT *
FROM employees
WHERE department_id = 20 OR department_id = 30;
ملازمن جي ٽيبل. سڀني ملازمن جي لسٽ حاصل ڪريو جن جي نالي ۾ آخري اکر 'a' آهي
فيصلو
SELECT *
FROM employees
WHERE first_name LIKE '%a';
ملازمن جي ٽيبل. 50 هين ۽ 80 هين ڊپارٽمينٽ (department_id) جي سڀني ملازمن جي لسٽ حاصل ڪريو جن وٽ بونس آهي (ڪميشن_ پي سي ٽي ڪالم ۾ قيمت خالي نه آهي)
فيصلو
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;
ملازمن جي ٽيبل. ملازمن جي هڪ فهرست حاصل ڪريو انهن جي پوزيشن سان فارميٽ ۾: Donald(sh_clerk)
فيصلو
SELECT first_name || '(' || LOWER (job_id) || ')' employee FROM employees;
آئوٽ پُٽ کي ڪسٽمائيز ڪرڻ لاءِ سنگل-رو افعال استعمال ڪندي
ملازمن جي ٽيبل. سڀني ملازمن جي لسٽ حاصل ڪريو جن جا نالا 10 اکرن کان ڊگھا آھن
فيصلو
SELECT *
FROM employees
WHERE LENGTH (first_name) > 10;
ملازمن جي ٽيبل. سڀني ملازمن جي هڪ فهرست حاصل ڪريو جن جي نالي ۾ خط 'b' آهي (ڪيس غير حساس)
فيصلو
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name), 'b') > 0;
ملازمن جي ٽيبل. سڀني ملازمن جي لسٽ حاصل ڪريو جن جا نالا گهٽ ۾ گهٽ 2 اکر تي مشتمل هجن
فيصلو
SELECT *
FROM employees
WHERE INSTR (LOWER (first_name),'a',1,2) > 0;
ملازمن جي ٽيبل. سڀني ملازمن جي لسٽ حاصل ڪريو جن جي تنخواه 1000 کان وڌيڪ آهي
فيصلو
SELECT *
FROM employees
WHERE MOD (salary, 1000) = 0;
ملازمن جي ٽيبل. هڪ ملازم جي فون نمبر جو پهريون 3 عددي نمبر حاصل ڪريو جيڪڏهن سندس نمبر فارميٽ ۾ آهي XXX.XXX.XXXX
فيصلو
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;
ملازمن جي ٽيبل. انھن سڀني ملازمن جي لسٽ حاصل ڪريو جن جي job_id جي قيمت '_' نشاني کان پوءِ گھٽ ۾ گھٽ 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;
ملازمن جي ٽيبل. سڀني ملازمن جي فهرست حاصل ڪريو مڪمل تنخواه سان (تنخواه + ڪميشن_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;
گروپ جي ڪمن کي استعمال ڪندي مجموعي ڊيٽا جي رپورٽ ڪرڻ
ملازمن جي ٽيبل. ڊپارٽمينٽ_id طرفان گهٽ ۾ گهٽ ۽ وڌ ۾ وڌ تنخواه، ڪم تي پهچڻ جي شروعاتي ۽ دير جي تاريخن ۽ ملازمن جي تعداد سان رپورٽ حاصل ڪريو. ملازمن جي تعداد جي لحاظ سان ترتيب ڏيو (اڀرندي)
فيصلو
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;
ملازمن جي ٽيبل. هڪ فهرست حاصل ڪريو Department_ids جن ۾ 30 کان وڌيڪ ملازم آهن
فيصلو
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (*) > 30;
ملازمن جي ٽيبل. ڊپارٽمينٽ_ids جي هڪ فهرست ۽ هر کاتي ۾ ملازمن جي گول سراسري تنخواه حاصل ڪريو.
فيصلو
SELECT department_id, ROUND (AVG (salary)) avg_salary
FROM employees
GROUP BY department_id;
ٽيبل ملڪن. فهرست حاصل ڪريو علائقي_ID سڀني خطن جو مجموعو سڀني ملڪ جي_نالن ۾ جن ۾ 60 کان وڌيڪ آھن
فيصلو
SELECT region_id
FROM countries
GROUP BY region_id
HAVING SUM (LENGTH (country_name)) > 60;
ملازمن جي ٽيبل. هڪ فهرست حاصل ڪريو Department_ids جنهن ۾ ملازمن جا ڪيترائي (>1) job_ids ڪم ڪن ٿا
فيصلو
SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT (DISTINCT job_id) > 1;
ملازمن جي ٽيبل. مينيجر_ids جي لسٽ حاصل ڪريو جن جي ماتحتن جو تعداد 5 کان وڌيڪ آھي ۽ سندس ماتحتن جي سڀني تنخوان جو مجموعو 50000 کان وڌيڪ آھي
فيصلو
SELECT manager_id
FROM employees
GROUP BY manager_id
HAVING COUNT (*) > 5 AND SUM (salary) > 50000;
ملازمن جي ٽيبل. مينيجر_ids جي لسٽ حاصل ڪريو جن جي سڀني ماتحتن جي سراسري تنخواه 6000 کان 9000 جي حد ۾ آهي ۽ جيڪي بونس وصول نٿا ڪن (commission_pct خالي آهي)
فيصلو
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;
ٽيبل ملازم، نوڪري_هسٽري. ملازم ٽيبل سڀني ملازمن کي محفوظ ڪري ٿو. Job_history ٽيبل انهن ملازمن کي محفوظ ڪري ٿو جيڪي ڪمپني ڇڏي ويا آهن. سڀني ملازمن جي باري ۾ رپورٽ حاصل ڪريو ۽ ڪمپني ۾ انهن جي حيثيت (ڪم ڪري ٿو يا روانگي جي تاريخ سان ڪمپني ڇڏي)
مثال طور
پهريون نالو | حيثيت
جينيفر | 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);
ٽيبل ملازم، رياستون، هنڌ، ملڪ، علائقا. ملازمن جي هڪ فهرست حاصل ڪريو جيڪي يورپ ۾ رهن ٿا (region_name)
فيصلو
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;
ٽيبل ملازم ، نوڪري ، ڊپارٽمينٽ. ملازمن کي فارميٽ ۾ ڏيکاريو: First_name، Job_title، Department_name.
مثال طور
پهريون نالو | نوڪري_ عنوان | ڊپارٽمينٽ_ نالو
ڊونالڊ | شپنگ | ڪلرڪ شپنگ
فيصلو
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;
ٽيبل ملازمن، شعبن. IT ڊپارٽمينٽ ۾ ڪم ڪندڙ ملازمن کي ڏيکاريو
فيصلو
SELECT *
FROM employees
WHERE department_id = (SELECT department_id
FROM departments
WHERE department_name = 'IT');
ٽيبل ملازم ، نوڪري ، ڊپارٽمينٽ. ملازمن کي فارميٽ ۾ ڏيکاريو: First_name، Job_title، Department_name.
مثال طور
پهريون نالو | نوڪري_ عنوان | ڊپارٽمينٽ_ نالو
ڊونالڊ | شپنگ | ڪلرڪ شپنگ
فيصلو
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;
اهو سڀ ڪجهه هاڻي لاءِ آهي.
مون کي اميد آهي ته ڪم دلچسپ ۽ دلچسپ هئا.
مان جيترو ٿي سگھي ڪمن جي ھن لسٽ ۾ شامل ڪندس.
مون کي به ڪنهن به رايا ۽ تجويزون حاصل ڪرڻ لاء خوش ٿي ويندي.
پي ايس: جيڪڏهن ڪو هڪ دلچسپ SELECT ڪم سان گڏ اچي، تبصرن ۾ لکو ۽ مان ان کي لسٽ ۾ شامل ڪندس.
مهرباني
جو ذريعو: www.habr.com