על מנת לפתור את התרגילים, מומלץ להעזר בפוסטים הבאים :

·        Basic Where Clause

·        Complex Operators

·        Order By

·        Substitution Variables

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את שמו הפרטי של העובד, משכורתו  ומספר מנהלו עבור אלו שיש להם מנהל.

פתרונות

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