Upskills SQL Test
Upskills SQL Test
Duration: minutes
3) Assume that table tab1 with id is primary key has 3000 records, tab2 with id is
primary key has 4000 records. How many rows the following query returns
select id from tab1
UNION
select id from tab2;
a) Aways 3000
b) At least 3000
c) Aways 4000
d) At least 4000
e) Aways 7000
4) Assume that table tab1 with id is primary key has 3000 records, tab2 with id is
primary key has 4000 records. How many rows the following query returns
select id from tab1 where exists (select id from tab2 where tab1.id = tab2.id)
UNION ALL
select id from tab2 ;
a) Aways 3000
b) At least 3000
c) Aways 4000
d) At least 4000
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 1 of 8
e) Aways 7000
5) Which is correct query to find a set of duplicate records with one field (say
field_name) in a given table (say tab)
a) select field_name from tab group by field_name having count(*) > 1;
b) select field_name from tab a where (select count(*) from tab b where a.field_name
= b.field_name) > 1;
c) select field_name from tab a where a.field_name not in (select field_name from tab
b where (select count(*) from tab c where b.field_name = c.field_name) = 1);
d) select field_name from tab a where (select max(field_name) from tab b) > 1;
e) select distinct field_name from (select field_name from tab a where (select
max(field_name) from tab b) > 1);
There are two tables in “test” schema for questions 6,7 as below:
Department Table
DEPT_ID Dept_Name Manager_ID
1 HR 1
2 IT 7
3 Admin 12
Employee Table
6) Which is correct query to find the department names which their managers has
highest salary compared with managers of other departments.
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 2 of 8
a) SELECT d.Dept_name FROM department d, employee e WHERE d.manager_id =
e.emp_id group by salary order by salary desc;
b) SELECT d.Dept_name FROM department d, employee e WHERE d.manager_id =
e.emp_id group by salary order by salary desc limit 1;
c) SELECT d.Dept_name FROM department d, employee e WHERE d.manager_id =
e.emp_id and not exists (select 1 from department d1 where d1.manager_id in
(select emp_id from employee where salary > e.salary))
d) SELECT d.Dept_name FROM department d, employee e WHERE d.manager_id =
e.emp_id and exists (select 2 from department d1 where d1.manager_id not in
(select emp_id from employee where salary > e.salary))
e) SELECT d.Dept_name, max(salary) FROM department d, employee e WHERE
d.manager_id = e.emp_id;
7) Which is correct query to find decending list of the salaries sum of each department
which is greater than 4000 calculating from all employees getting more than 1000.
a) SELECT
d.dept_name, SUM(salary) AS s_salary
FROM
department d,
employee e
WHERE
d.dept_id = e.dept_id
AND e.salary > 1000
GROUP BY e.dept_id
HAVING s_salary > 4000;
b) SELECT
r.dept_name, SUM(salary) AS s_salary
FROM
(SELECT
*
FROM
department d, employee e
WHERE
d.dept_id = e.dept_id
AND e.salary > 1000) AS r
GROUP BY r.dept_id
HAVING SUM(salary) > 4000
ORDER BY s_salary DESC;
c) SELECT
r.dept_name, SUM(salary) AS s_salary
FROM
(SELECT
d.dept_name, e.*
FROM
department d, employee e
WHERE
d.dept_id = e.dept_id
AND e.salary > 1000) AS r
GROUP BY r.dept_id
HAVING SUM(salary) > 4000
ORDER BY s_salary DESC;
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 3 of 8
d) SELECT
r.dept_name, SUM(salary) AS s_salary
FROM
(SELECT
*
FROM
department d, employee e
WHERE
d.dept_id = e.dept_id
AND e.salary > 1000
GROUP BY r.dept_id
HAVING SUM(salary) > 4000
ORDER BY s_salary DESC) AS r;
e) SELECT
r.dept_name, SUM(salary) AS s_salary
FROM
(SELECT
d.dept_name, e.*
FROM
department d, employee e
WHERE
d.dept_id = e.dept_id
AND e.salary > 1000
GROUP BY r.dept_id
HAVING SUM(salary) > 4000
ORDER BY s_salary DESC) AS r;
8) Which is correct query to find the names of all employees who earn more than any
employee of “Upskills”. Assume that all people work for at most one company.
a) SELECT
`employee-name`
FROM
works
WHERE
salary > (SELECT
MAX(salary)
FROM
works
WHERE
`company-name` = 'Upskills');
b) SELECT
employee-name
FROM
works
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 4 of 8
WHERE
salary > (SELECT
MAX(salary)
FROM
works
WHERE
company-name = 'Upskills');
c) SELECT
employee-name
FROM
works
WHERE
salary > (SELECT
MIN(salary)
FROM
works
WHERE
company-name = 'Upskills');
d) SELECT
`employee-name`
FROM
works
WHERE
salary > (SELECT
MIN(salary)
FROM
works
WHERE
`company-name` = 'Upskills');
e) SELECT
`employee-name`
FROM
works w
WHERE
NOT EXISTS( SELECT
1
FROM
works
WHERE
`company-name` = 'Upskills'
AND salary > w.salary);
9) Which is correct query to find a set of all companies located in every city in which
“Upskills” is located (For example, if Upskills is located in A,B,C cities, the satisfied
companies must be located at least in A,B,C).
a) SELECT
s.`company-name`
FROM
company s
WHERE
s.`company-name` <> 'Upskills'
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 5 of 8
AND NOT EXISTS( SELECT
1
FROM
company
WHERE
`company-name` = 'Upskills'
AND city NOT IN (SELECT
city
FROM
company c
WHERE
c.`company-name` = s.`company-name`));
b) SELECT
s.company-name
FROM
company s
WHERE
s.company-name <> 'Upskills'
AND NOT EXISTS( SELECT
1
FROM
company
WHERE
company-name = 'Upskills'
AND city NOT IN (SELECT
city
FROM
company c
WHERE
c.company-name = s.company-name));
c) SELECT
s.company-name
FROM
company s,
company u
WHERE
s.company-name <> u.company-name
AND u.company-name = 'Upskills'
AND s.city = u.city
GROUP BY s.company-name
HAVING COUNT(*) = (SELECT
COUNT(*)
FROM
company t
WHERE
t.company-name = 'Upskills');
d) SELECT
s.`company-name`
FROM
company s,
company u
WHERE
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 6 of 8
s.`company-name` <> u.`company-name`
AND u.`company-name` = 'Upskills'
AND s.city = u.city
GROUP BY s.`company-name`
HAVING COUNT(*) = (SELECT
COUNT(*)
FROM
company t
WHERE
t.`company-name` = 'Upskills');
e) SELECT DISTINCT
s.company-name
FROM
company s
WHERE
s.company-name <> 'Upskills'
AND s.city IN (SELECT
city
FROM
company
WHERE
company-name = 'Upskills');
10)Which is correct query to find the name of a company that has the smallest payroll (the
amount of money paid for the employees)
a) SELECT
`company-name`
FROM
works
GROUP BY `company-name`
order by SUM(salary) limit 1;
b) SELECT
`company-name`
FROM
works
GROUP BY `company-name`
order by SUM(salary) desc limit 1;
c) SELECT
company-name
FROM
works
GROUP BY company-name
order by SUM(salary) desc limit 1;
d) SELECT
company-name
FROM
works
GROUP BY company-name
order by SUM(salary) limit 1;
e) SELECT
company-name
FROM
works
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 7 of 8
GROUP BY company-name
order by SUM(salary);
Upskills Viet Nam Co. Ltd | 6th Floor, CNC Building, 8 – 10 Nguyen Ba Tuyen Street, Ward 12, Tan Binh District,
Ho Chi Minh City, Vietnam | www.upskills.com
Page 8 of 8