You are on page 1of 5

SUBQUERIES

Duplicate values(FOR EXAMPLE same last_name)

SELECT emp_id FROM empl_1148 WHERE salary>(SELECT salary FROM empl_1148 WHERE
last_name='Smith');

Duplicate values(FOR EXAMPLE same dep)

SELECT emp_id,first_name FROM empl_1148 WHERE salary>(SELECT salary FROM


empl_1148 WHERE dep='ADF');

SELECT emp_id,first_name FROM empl_1148 WHERE salary>(SELECT salary FROM empl_1148 WHERE
first_name='Maria');

USING AND
1)Satisfies both condition

SELECT first_name ,emp_id,salary FROM empl_1148 WHERE emp_id=(SELECT emp_id FROM


empl_1148 WHERE emp_id=278) AND salary >(SELECT salary FROM empl_1148 WHERE emp_id=115);
Take empid 278 salary for
comparison

Select firstname,empid,salary from table empl where( EMPID=278 ) AND


salary(25000)>(20,000)

2)Satisfies one condition

SELECT first_name ,emp_id,salary FROM empl_1148 WHERE emp_id=(SELECT emp_id FROM


empl_1148 WHERE emp_id=278) AND salary >(SELECT salary FROM empl_1148 WHERE emp_id=267);

USING OR

1)Display if any one condition satisfies

SELECT first_name ,emp_id,salary FROM empl_1148 WHERE emp_id=(SELECT emp_id FROM


empl_1148 WHERE emp_id=278) OR salary >(SELECT salary FROM empl_1148 WHERE
emp_id=267);

2) SELECT first_name ,emp_id,salary FROM empl_1148 WHERE emp_id=(SELECT emp_id FROM


empl_1148 WHERE emp_id=278) OR salary >(SELECT salary FROM empl_1148 WHERE emp_id=245);

USING GROUP FUNCTIONS

MAX AND MIN

SELECT first_name,salary FROM empl_1148 WHERE salary=(SELECT MAX(salary)


FROM empl_1148) OR salary=(SELECT MIN(SALARY) FROM empl_1148);

GROUPBY AND HAVING

SELECT dep,MAX(salary) FROM empl_1148 GROUP BY dep HAVING MIN(salary)>(SELECT


MIN(salary) FROM empL_1148 WHERE dep='ADF');

Select min salary from table where dep =ADF--------------->15000


Select dep,maximum salary from table compared by group
HR Group la maximum 30000
ADF la maximum 20000
Finance la maximum 25000
Sys admin la maximum 36000
Having min(salary)--->>min(30000,20000,,25000,36000)>15000

MULTIPLE ROW SUBQUERIES

IN

SELECT first_name,salary FROM empl_1148 WHERE salary IN(SELECT salary FROM empl_1148
WHERE dep='ADF');

ANY

Compare pananum(so relational operator must)

1)SELECT first_name,salary FROM empl_1148 WHERE salary > ANY (SELECT salary FROM empl_1148
WHERE dep='ADF') ;

Take minimum one


(15000) and compare
to every value in table

3) SELECT first_name,salary FROM empl_1148 WHERE salary > ANY (SELECT salary FROM empl_1148
WHERE dep='Hernandez') ; 16000
15000
20000
ALL

1)SELECT first_name,salary FROM empl_1148 WHERE salary > ANY (SELECT salary FROM empl_1148
WHERE dep='Hernandez') ;

23000,25000.Take
both values and
compare

2) SELECT first_name,salary FROM empl_1148 WHERE salary > ALL (SELECT salary FROM empl_1148
WHERE last_name='Smith') ;

PAIRWISE COMPARSIONS

Using IN we can check pair(take pair)

1) SELECT emp_id,last_name FROM empl_1148 WHERE (emp_id,last_name) IN (SELECT


emp_id,last_name FROM empl_1148 WHERE emp_id IN (245,278)) AND emp_id NOT IN (109,278);

Omit 278
245 Hernandez Garcia
278 Garcia

2) SELECT first_name,last_name FROM empl_1148 WHERE(first_name,last_name) IN (SELECT


first_name,last_name FROM empl_1148 WHERE dep IN('ADF','HR')) AND last_name NOT IN
('Smith','Davis');

NONPAIRWISE COMPARSIONS

1) SELECT emp_id,first_name,last_name FROM empl_1148 WHERE first_name IN(SELECT first_name


FROM empl_1148 WHERE emp_id IN(109,278)) AND last_name IN(SELECT last_name FROM
empl_1148 WHERE emp_id IN(278,115));
2) SELECT emp_id,first_name,last_name FROM empl_1148 WHERE first_name IN(SELECT first_name
FROM empl_1148 WHERE emp_id IN(109,278)) OR last_name IN(SELECT last_name FROM empl_1148
WHERE emp_id IN(278,115));

/*print duplicate*/

You might also like