תרגול זה מסתמך על מאגר הנתונים HR. לתרגולים נוספים בנושאים שונים ניתן להשתמש במדריך ה SQL.

 

1.     מתוך טבלת EMPLOYEESהציגו את שמו הפרטי ומספר מחלקתו של העובד ששם משפחתו הוא
De Haan
.

2.      מתוך טבלת DEPARTMENTS הציגו את כל הנתונים עבור המחלקה ששמה Sales.

3.      מתוך טבלת EMPLOYEES,עבור עובדים אשר מרוויחים מעל 9700, הציגו את שם העובד, שם המשפחה, מספר המחלקה והשכר.

4.      הציגו את כל המידע אודות העובדים אשר הצטרפו לחברה לפני שנת 92 (1992-JAN-01).

5.      הציגו מספר עובד, שם פרטי, קוד משרה (job_id) ומס' מחלקה עבור העובדים במחלקות 20, 60 ו-80.

6.      הציגו את אותם נתונים עבור העובדים אשר לא נמצאים במחלקות 20, 60, ו-80.

7.      הציגו את שם המשפחה, מספר הטלפון, השכר ומספר המנהל של העובד, עבור העובדים שמספר המנהל שלהם הוא 100 או 103 או 102.

8.      הציגו את שמם הפרטי ומשכורתם של כל העובדים אשר שמם הפרטי מסתיים באות e.

9.      הציגו את שם משפחתם ומספר מחלקתם של כל העובדים אשר האות השניה בשם משפחתם היא  i.

10.  הציגו את כל המידע אודות העובדים אשר שם משפחתם מכיל את האותיות L או  J או H, מיינו את התוצאות לפי שכרם (בסדר יורד).

11.  הציגו את שם העובד, תאריך גיוס, משכורת ומס' מחלקה עבור העובדים אשר שמם לא מכיל את האות A מיינו את התוצאות לפי מספר מחלקתם (סדר עולה).

12.  הציגו את כל הנתונים עבור העובדים ללא מחלקה.

13.  מתוך טבלת EMPLOYEESהציגו את שמות העובדים (שם משפחה משורשר עם רווח משורשר עם השם הפרטי) ומשכורתם עבור העובדים אשר שכרם לא נמצא בטווח של 7000-15000 מיינו את התוצאות לפי  שמם המלא.

14.  הציגו בעמודה אחת את שמו המלא של העובד תחת הכינוי  FULL NAME, בעמודה שניה טלפון ואימייל תחת הכינוי  CONTACTS, ובעמודה שלישית משכורת תחת הכינוי  SAL, עבור אלה שמשכורתם הינה בטווח שבין 5000 ו-10000.

15.  הציגו את כל פרטי העובדים אשר מרוויחים בין 6000 ל-8000 וגם מרוויחים עמלה או את העובדים אשר אינם נמצאים במחלקות 80, 90, 110 וגם התגייסו לחברה לפני שנת 90. מיינו את התוצאות בסדר ראשי לפי מספר המחלקה וסדר משני לפי השכר (שניהם בסדר עולה).

16.  מתוך טבלת EMPLOYEES  הציגו את שם המשפחה, קוד משרה, ותאריך העסקה עבור העובדים אשר הועסקו בין ה 12 לדצמבר 1995 ל- 17 לאפריל 1998. סדרו את התאריכים בסדר עולה לפי התאריך .

17.  הציגו את השם הפרטי משורשר עם שם משפחה, תאריך העסקה, אחוז עמלה, טלפון ומשכורת, עבור כל אלו שמשכורתם (המלאה כולל עמלה) גדולה  מ-10,000. או אלו שהספרה השלישית במספר הטלפון שלהם היא 5. מיינו את התוצאות עפ"י השם הפרטי (סדר יורד).

18.  מתוך טבלת EMPLOYEESהציגו את שם המשפחה והמשכורת של העובדים אשר מרוויחים יותר מ-12,000.

          האם ניתן להציג את נתונים אלו עפ"י התנאי המבוקש ללא הצגת השכר ?

19.  מתוך טבלת EMPLOYEES  הציגו את שם המשפחה ואת מספר המחלקה עבור אלו שמספר המחלקה שלהם הוא 50 או 80 . בצעו את התרגיל בשני אופנים.

          האם התרגיל יחזיר תוצאות בצורה הבאה?

SELECT  last_name, department_id
FROM employees
WHERE department_id = 50 AND department_id = 80;

 

20.  הציגו מתוך טבלת EMPLOYEESאת שמו הפרטי של העובד ומשכורתו עבור אלו שלא מרוויחים עמלה.

21.  הציגו מתוך טבלת EMPLOYEESאת שמו הפרטי של העובד, משכורתו  ומספר מנהלו עבור אלו שיש להם מנהל.

 

פתרונות SQL Server


הפתרונות הבאים תקפים לפלטפורמת מיקרוסופט, לפתרונות עבור פלטפורמת אורקל לחץ כאן.

1.
SELECT first_name , department_id
FROM employees
WHERE last_name = 'De Haan'
 
2.
SELECT *
FROM  departments
WHERE department_name = 'Sales'
 
3.
SELECT first_name , last_name , department_id , salary
FROM employees
WHERE salary > 9700 
 
4.
SELECT *
FROM employees
WHERE hire_date < '01-JAN-1992'
 
5.
SELECT employee_id , first_name , job_id, department_id
FROM employees
WHERE department_id IN (20 , 60 , 80) 
 
6.
SELECT employee_id , first_name , job_id, department_id
FROM employees
WHERE department_id NOT IN (20 , 60 , 80) 
 
7.
SELECT last_name , phone_number , salary , manager_id
FROM employees
WHERE manager_id IN (103 , 102 , 100) 
 
8.
SELECT first_name , salary
FROM employees
WHERE first_name LIKE '%e'
 
9.
SELECT last_name , department_id
FROM employees
WHERE last_name LIKE '_i%'
 
10.
SELECT *
FROM employees
WHERE last_name LIKE '%L%'
OR    last_name LIKE '%J%'
OR    last_name LIKE '%H%'
ORDER BY salary DESC
 
11.
SELECT first_name , hire_date , salary , department_id
FROM employees
WHERE first_name NOT LIKE '%A%'
ORDER BY department_id
 
12.
SELECT *
FROM employees
WHERE department_id IS NULL
 
13.
SELECT first_name + ' '+ last_name , salary
FROM  employees
WHERE salary NOT BETWEEN 7000 AND 15000
ORDER BY isnull(first_name, '') + ' '+ isnull(last_name, '')
 
14.
SELECT first_name + ' '+ last_name AS "FULL_NAME" ,
       phone_number + ' - ' + email AS "CONTACTS",
       salary  AS "SAL"
FROM employees
WHERE salary BETWEEN 5000 AND 10000
 
15.
SELECT *
FROM employees
WHERE salary BETWEEN 6000 AND 8000 AND commission_pct IS NOT NULL
OR
      department_id NOT IN (80 , 90 , 110) AND  hire_date < '01-JAN-1990'
ORDER BY department_id , salary  
 
16.
SELECT last_name , job_id , hire_date
FROM employees
WHERE hire_date BETWEEN '12-DEC-1995' AND '17-APR-1998'
ORDER BY hire_date 
 
17.
SELECT first_name + ' '+ last_name , hire_date  ,
       commission_pct , phone_number , salary
FROM employees
WHERE salary + salary * commission_pct > 10000
OR
      phone_number LIKE '__5%'
ORDER BY first_name DESC
 
18.
SELECT last_name , salary
FROM employees
WHERE salary > 12000
 
19.
SELECT  last_name, department_id
FROM employees
WHERE department_id = 50 OR department_id = 80;
 
SELECT  last_name, department_id
FROM employees
WHERE department_id IN (50 , 80)
 
20.
SELECT first_name , salary
FROM  employees
WHERE commission_pct IS NULL
 
21.
SELECT first_name , salary , manager_id
FROM employees
WHERE manager_id IS NOT NULL

 

פתרונות Oracle

1.
SELECT first_name , department_id
FROM employees
WHERE last_name = 'De Haan'
 
2.
SELECT *
FROM  departments
WHERE department_name = 'Sales'
 
3.
SELECT first_name , last_name , department_id , salary
FROM employees
WHERE salary > 9700 
 
4.
SELECT *
FROM employees
WHERE hire_date < '01-JAN-1992'
 
5.
SELECT employee_id , first_name , job_id, department_id
FROM employees
WHERE department_id IN (20 , 60 , 80) 
 
6.
SELECT employee_id , first_name , job_id, department_id
FROM employees
WHERE department_id NOT IN (20 , 60 , 80) 
 
7.
SELECT last_name , phone_number , salary , manager_id
FROM employees
WHERE manager_id IN (103 , 102 , 100) 
 
8.
SELECT first_name , salary
FROM employees
WHERE first_name LIKE '%e'
 
9.
SELECT last_name , department_id
FROM employees
WHERE last_name LIKE '_i%'
 
10.
SELECT *
FROM employees
WHERE last_name LIKE '%L%'
OR    last_name LIKE '%J%'
OR    last_name LIKE '%H%'
ORDER BY salary DESC
 
11.
SELECT first_name , hire_date , salary , department_id
FROM employees
WHERE first_name NOT LIKE '%A%'
ORDER BY department_id
 
12.
SELECT *
FROM employees
WHERE department_id IS NULL
 
13.
SELECT first_name || ' '|| last_name , salary
FROM  employees
WHERE salary NOT BETWEEN 7000 AND 15000
ORDER BY first_name || ' '|| last_name
 
14.
SELECT first_name || ' '|| last_name AS "FULL_NAME" ,
       phone_number || ' - ' || email AS "CONTACTS",
       salary  AS "SAL"
FROM employees
WHERE salary BETWEEN 5000 AND 10000
 
15.
SELECT *
FROM employees
WHERE salary BETWEEN 6000 AND 8000 AND commission_pct IS NOT NULL
OR
      department_id NOT IN (80 , 90 , 110) AND  hire_date < '01-JAN-1990'
ORDER BY department_id , salary  
 
16.
SELECT last_name , job_id , hire_date
FROM employees
WHERE hire_date BETWEEN '12-DEC-1995' AND '17-APR-1998'
ORDER BY hire_date 
 
17.
SELECT first_name || ' '|| last_name , hire_date  ,
       commission_pct , phone_number , salary
FROM employees
WHERE salary + salary * commission_pct > 10000
OR
      phone_number LIKE '__5%'
ORDER BY first_name DESC
 
18.
SELECT last_name , salary
FROM employees
WHERE salary > 12000
 
19.
SELECT  last_name, department_id
FROM employees
WHERE department_id = 50 OR department_id = 80;
 
SELECT  last_name, department_id
FROM employees
WHERE department_id IN (50 , 80)
 
20.
SELECT first_name , salary
FROM  employees
WHERE commission_pct IS NULL
 
21.
SELECT first_name , salary , manager_id
FROM employees
WHERE manager_id IS NOT NULL