வணக்கம் ஹப்ர்!
3 ஆண்டுகளுக்கும் மேலாக நான் பல்வேறு பயிற்சி மையங்களில் SQL கற்பித்து வருகிறேன், மேலும் எனது அவதானிப்புகளில் ஒன்று என்னவென்றால், மாணவர்கள் SQL இல் தேர்ச்சி பெறுகிறார்கள், அவர்களுக்கு ஒரு பணி வழங்கப்பட்டால், அது சாத்தியங்கள் மற்றும் தத்துவார்த்த அடித்தளங்களைப் பற்றி மட்டும் பேசாது.
இந்த கட்டுரையில், நான் மாணவர்களுக்கு வீட்டுப்பாடமாக வழங்கும் பணிகளின் பட்டியலை உங்களுடன் பகிர்ந்து கொள்கிறேன், மேலும் SQL பற்றிய ஆழமான மற்றும் தெளிவான புரிதலுக்கு வழிவகுக்கும் பல்வேறு வகையான மூளைச்சலவைகளை நாங்கள் நடத்துகிறோம்.
SQL (ˈɛsˈkjuˈɛl; ஆங்கிலம் கட்டமைக்கப்பட்ட வினவல் மொழி - "கட்டமைக்கப்பட்ட வினவல் மொழி") என்பது ஒரு பொருத்தமான தரவுத்தள மேலாண்மை அமைப்பால் நிர்வகிக்கப்படும் தொடர்புடைய தரவுத்தளத்தில் தரவை உருவாக்க, மாற்ற மற்றும் நிர்வகிக்கப் பயன்படும் ஒரு அறிவிப்பு நிரலாக்க மொழியாகும்.
நீங்கள் SQL பற்றி வெவ்வேறு வழிகளில் படிக்கலாம்
இந்த கட்டுரை புதிதாக SQL ஐ உங்களுக்கு கற்பிப்பதற்காக அல்ல.
எனவே போகலாம்.
நன்கு அறியப்பட்டதைப் பயன்படுத்துவோம்
SELECT இல் உள்ள பணிகளை மட்டுமே நாங்கள் கருத்தில் கொள்வோம் என்பதை நான் கவனிக்கிறேன். DML மற்றும் DDL இல் பணிகள் எதுவும் இல்லை.
பணிகளை
தரவை கட்டுப்படுத்துதல் மற்றும் வரிசைப்படுத்துதல்
பணியாளர்கள் அட்டவணை. அனைத்து ஊழியர்களைப் பற்றிய தகவலுடன் பட்டியலைப் பெறுங்கள்
முடிவு
SELECT * FROM employees
பணியாளர்கள் அட்டவணை. 'டேவிட்' என்ற பெயருடைய அனைத்து ஊழியர்களின் பட்டியலைப் பெறுங்கள்
முடிவு
SELECT *
FROM employees
WHERE first_name = 'David';
பணியாளர்கள் அட்டவணை. 'IT_PROG'க்கு சமமான job_id உள்ள அனைத்து ஊழியர்களின் பட்டியலைப் பெறவும்
முடிவு
SELECT *
FROM employees
WHERE job_id = 'IT_PROG'
பணியாளர்கள் அட்டவணை. 50க்கும் அதிகமான சம்பளத்துடன் (சம்பளம்) 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வது துறையிலிருந்து (துறை_ஐடி) போனஸ் பெற்ற அனைத்து ஊழியர்களின் பட்டியலைப் பெறவும் (கமிஷன்_பிசிடி நெடுவரிசையில் மதிப்பு காலியாக இல்லை)
முடிவு
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;
பணியாளர்கள் அட்டவணை. தங்கள் பெயரில் 'b' என்ற எழுத்தைக் கொண்ட அனைத்து ஊழியர்களின் பட்டியலைப் பெறவும் (உணர்வு உணர்வு இல்லாதது)
முடிவு
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';
இரட்டை அட்டவணை. நாளைய தேதியை வடிவமைப்பில் காட்டு: நாளை ஜனவரி இரண்டாம் நாள்
முடிவு
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';
இரட்டை அட்டவணை. தற்போதைய தேதி, + இரண்டாவது, + நிமிடம், + மணிநேரம், + நாள், + மாதம், + ஆண்டு ஆகியவற்றை ஏற்றுமதி செய்யவும்
முடிவு
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;
பணியாளர்கள் அட்டவணை. முழு சம்பளம் (சம்பளம் + கமிஷன்_பிசிடி(%)) உள்ள அனைத்து ஊழியர்களின் பட்டியலை வடிவத்தில் பெறவும்: $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) job_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;
பணியாளர்கள் அட்டவணை. 'CLERK' என்ற வார்த்தையுடன் முடியும் job_id அனைத்து ஊழியர்களிடமிருந்தும் அதிகபட்ச சம்பளத்தைப் பெறுங்கள்
முடிவு
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;
அட்டவணை பணியாளர்கள், வேலைகள், துறைகள். பணியாளர்களை வடிவமைப்பில் காண்பி: முதல்_பெயர், பணி_தலைப்பு, துறை_பெயர்.
உதாரணம்:
முதல்_பெயர் | வேலை தலைப்பு | துறை பெயர்
டொனால்ட் | கப்பல் | கிளார்க் ஷிப்பிங்
முடிவு
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 இல் ஒரு சுவாரஸ்யமான பணியைக் கொண்டு வந்தால், கருத்துகளில் எழுதுங்கள், நான் அதை பட்டியலில் சேர்ப்பேன்.
Спасибо.
ஆதாரம்: www.habr.com