0% found this document useful (0 votes)
29 views5 pages

Subquery

The document discusses different types of subqueries including scalar, multiple rows single column, and multiple rows multiple columns subqueries. It also discusses correlated vs independent subqueries. Examples are provided for each type of subquery using movie data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views5 pages

Subquery

The document discusses different types of subqueries including scalar, multiple rows single column, and multiple rows multiple columns subqueries. It also discusses correlated vs independent subqueries. Examples are provided for each type of subquery using movie data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

FIND HIGHEST RATED MOVIE

============================
SELECT * FROM movies
WHERE score = (SELECT MAX(score) FROM movies)

TYPES OF SUBQUERIES
==========================
1. BASED ON RETURNED DATA
I. SCALAR SUBQUERY (RETURNS SINGLE VALUE)
II. RETURNS MULTIPLE ROWS BUT SINGLE COLUMNS
III. RETURNS MULTIPLE ROWS AND MULTIPLE COLUMNS
2. BASED ON WORKING
I. INDEPENDENT SUBQUERY (INNER QUERY IS INDEPENDENT OF OUTER QUERY)
II. CORRELATED SUBQUERY (INNER QUERY DEPENDS ON OUTER QUERY)

SUBQUERIES CAN BE USED WITH


============================
INSERT
SELECT (WHERE,SELECT, FROM, HAVING)
UPDATE
DELETE

==========================================
I. SCALAR SUBQUERY (RETURNS SINGLE VALUE)
==========================================

SELECT MOVIES WITH HIGHEST PROFIT


=========================================================
SELECT * FROM movies
WHERE (gross - budget) = (SELECT MAX(gross - budget) FROM movies)

SELECT * FROM movies


ORDER BY (gross - budget) LIMIT 1

HOW MANY MOVIES HAVE RATING > AVG. OF ALL MOVIE RATINGS
=======================================================
SELECT COUNT(*) FROM movies
WHERE score > (SELECT AVG(score) FROM movies)

FIND HIGHEST RATED MOVIE OF 2000


================================
SELECT * FROM movies
WHERE year = 2000
AND score = (SELECT max(score) FROM movies WHERE year = 2000)

HIGHEST RATED MOVIE AMONG ALL MOVIES WHOSE NUMBER OF VOTES ARE > THE DATASET AVG
VOTES
===================================================================================
======
SELECT * FROM movies
WHERE votes > (SELECT AVG(votes) FROM movies)
AND score = (SELECT MAX(score) FROM movies)

=============================================
II. RETURNS MULTIPLE ROWS BUT SINGLE COLUMNS
=============================================

SELECT THOSE USERS WHO NEVER PLACED AN ORDER


================================================
SELECT user_id FROM users
EXCEPT
SELECT user_id FROM orders
--------------------------------------------------------------------------------
SELECT * FROM users
WHERE user_id NOT IN (SELECT DISTINCT(user_id) FROM orders)

FIND ALL MOVIES MADE BY TOP 3 DIRECTORS(IN TERMS OF GROSS INCOME)


=================================================================
WITH top_directors AS (SELECT director FROM movies GROUP BY director ORDER BY
SUM(gross) LIMIT 3)

SELECT * FROM movies


WHERE director IN (SELECT * FROM top_directors)

(ALSO CALLED CTE #COMON TABLE EXPRESSION)

FIND ALL MOVIES OF THOSE ACTORS WHOSE FILMOGRAPHY AVG. RATING > 8.5(TAKE 25K VOTES
AS CUTOFF)
===================================================================================
==========
SELECT * FROM movies
WHERE star IN (SELECT star FROM movies WHERE votes > 25000 GROUP BY star HAVING
AVG(score) > 8.5)

===============================================
III. RETURNS MULTIPLE ROWS AND MULTIPLE COLUMNS
===============================================

FIND MOST PROFITABLE MOVIE OF EACH YEAR


========================================
select * from movies
where (year,gross-budget) IN (SELECT year,MAX(gross - budget) FROM movies GROUP BY
year)

FIND HIGHEST RATED MOVIE OF EACH GENRE AND VOTES CUTOFF OF 25000
=================================================================
SELECT * FROM movies
WHERE (genre,score) IN (SELECT GENRE,MAX(score) FROM MOVIES WHERE votes > 25000
GROUP BY GENRE)

FIND HIGHEST GROSSING MOVIE OF TOP 5 ACTOR/DIRECTOR COMBO IN TERMS OF GROSS INCOME
===================================================================================
==
WITH top_duos AS (SELECT star,director,MAX(gross) FROM movies GROUP by
star,director ORDER BY MAX(gross) DESC LIMIT 5)

SELECT * FROM movies


WHERE (star,director,gross) IN (SELECT * FROM top_duos)

=========================
II. CORRELATED SUBQUERY
=========================

FIND ALL THE MOVIES THAT HAVE A RATING HIGHER THAN THE AVERAGE RATING OF MOVIES IN
SAME GENRE
===================================================================================
==========
SELECT * FROM movies m1
WHERE score > (SELECT AVG(score) FROM movies m2 WHERE m2.genre = m1.genre )

FIND FAVOURITE FOOD OF EACH CUSTOMER


=======================================
WITH food_freq AS (
SELECT t1.user_id,name,t3.f_id,f_name,COUNT(*) AS
'frequency' FROM orders t1
JOIN users t2 ON t1.user_id = t2.user_id
JOIN order_details t3 on t1.order_id = t3.order_id
JOIN food t4 ON t4.f_id = t3.f_id
GROUP BY t1.user_id,t3.f_id
)

SELECT * FROM food_freq f1


WHERE frequency = (SELECT MAX(frequency) FROM food_freq f2 WHERE f2.user_id =
f1.user_id)

=====================================
III. SUBQUERIES WITH SELECT STATEMENT
=====================================

GET THE PERCENTAGE OF VOTES FOR EACH MOVIE COMPARED TO THE TOTAL NUMBER OF VOTES
===================================================================================
=
SELECT name,(votes/(SELECT SUM(votes) FROM movies))*100 FROM movies
DISPLAY ALL MOVIE NAMES, GENRE, SCORE AND AVG(score) OF genre
===========================================================
SELECT name, genre, score, (SELECT AVG(score) FROM movies t2 WHERE t2.genre =
t1.genre) FROM movies t1

=====================================
III. SUBQUERIES WITH FROM STATEMENT
=====================================

You might also like