mirror of
https://github.com/Andreaierardi/Master-DataScience-Notes.git
synced 2025-01-27 19:57:38 +01:00
116 lines
4.0 KiB
SQL
116 lines
4.0 KiB
SQL
-- retrieve the name of inactive business units that are placed in the same city
|
|
SELECT b1.name, b2.name, b1.city, b2.city
|
|
FROM business b1 INNER JOIN business b2 ON (b1.city = b2.city AND b1.id <> b2.id)
|
|
WHERE b1.is_active = False AND b2.is_active = False;
|
|
|
|
|
|
-- retrieve the name of inactive business units that are placed in the same country
|
|
|
|
|
|
-- retrieve the other categories associated with business units about "Food"
|
|
SELECT *
|
|
FROM incat i1 INNER JOIN incat i2 ON (i1.business = i2.business AND i1.category <> i2.category)
|
|
WHERE i2.category = 'Food';
|
|
|
|
SELECT DISTINCT category
|
|
FROM incat
|
|
WHERE business IN
|
|
(SELECT business
|
|
FROM incat
|
|
WHERE category = 'Food');
|
|
|
|
|
|
-- retrieve the id of business units that have been reviewed by the same reviewer after October 2017
|
|
SELECT DISTINCT r1.business AS "business 1", r2.business AS "business 2", r1.reviewer AS "reviewer 1", r2.reviewer AS "reviewer 2"
|
|
FROM review AS r1 INNER JOIN review AS r2 ON (r1.business <> r2.business AND r1.reviewer = r2.reviewer)
|
|
WHERE r1.review_date >= '2017-11-01' AND r2.review_date >= '2017-11-01';
|
|
|
|
|
|
-- retrieve the id of reviewers that reviewed the same business after October 2017
|
|
SELECT DISTINCT r1.reviewer AS "reviewer 1", r2.reviewer AS "reviewer 2", r1.business AS "business 1", r2.business AS "business 2"
|
|
FROM review AS r1 INNER JOIN review as r2 ON (r1.business = r2.business AND r1.reviewer <> r2.reviewer)
|
|
WHERE r1.review_date >= '2017-11-01' AND r2.review_date >= '2017-11-01';
|
|
|
|
|
|
-- retrieve the id of business units that received a number of reviews higher than average
|
|
SELECT name, review_count
|
|
FROM business
|
|
WHERE review_count >
|
|
(SELECT avg(review_count)
|
|
FROM business);
|
|
|
|
|
|
-- retrieve the name of businesses in Las Vegas (NV) OR Kent (OH)
|
|
SELECT business.name AS business
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE (city.name = 'Las Vegas' AND country = 'NV') OR
|
|
(city.name = 'Kent' AND country = 'OH');
|
|
|
|
-- alternative solution through the UNION set operation:
|
|
SELECT business.name AS business
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE (city.name = 'Las Vegas' AND country = 'NV')
|
|
UNION
|
|
SELECT business.name AS business
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE (city.name = 'Kent' AND country = 'OH');
|
|
|
|
|
|
-- retrieve the name of businesses in Las Vegas (NV) AND Kent (OH)
|
|
SELECT DISTINCT business.name
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE city.name = 'Las Vegas' AND country = 'NV'
|
|
INTERSECT
|
|
SELECT DISTINCT business.name
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE city.name = 'Kent' AND country = 'OH';
|
|
|
|
-- alternative solution through nested queries:
|
|
SELECT DISTINCT business.name AS business
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE (city.name = 'Las Vegas' AND country = 'NV')
|
|
AND business.name IN
|
|
(SELECT business.name
|
|
FROM business INNER JOIN city ON business.city = city.id
|
|
WHERE (city.name = 'Kent' AND country = 'OH'));
|
|
|
|
|
|
-- retrieve the services non offered by the businesses of Las Vegas (NV)
|
|
SELECT name
|
|
FROM feature
|
|
EXCEPT
|
|
SELECT DISTINCT feature
|
|
FROM services INNER JOIN business ON business.id = services.business INNER JOIN city ON business.city = city.id
|
|
WHERE city.name = 'Las Vegas' AND country = 'NV';
|
|
|
|
|
|
-- retrieve the services offered by the businesses Las Vegas (NV) AND Kent (OH)
|
|
SELECT DISTINCT feature
|
|
FROM services INNER JOIN business ON business.id = services.business INNER JOIN city ON business.city = city.id
|
|
WHERE city.name = 'Las Vegas' AND country = 'NV'
|
|
INTERSECT
|
|
SELECT DISTINCT feature
|
|
FROM services INNER JOIN business ON business.id = services.business INNER JOIN city ON business.city = city.id
|
|
WHERE city.name = 'Kent' AND country = 'OH';
|
|
|
|
|
|
-- retrieve the name of reviewers that did not perform any review
|
|
|
|
|
|
-- retrieve the name of businesses that did not receive any review
|
|
|
|
|
|
-- retrieve the category with the highest number of business units
|
|
SELECT category, count(*)
|
|
FROM incat
|
|
GROUP BY category
|
|
HAVING count(*) >= ALL
|
|
(SELECT count(*)
|
|
FROM incat
|
|
GROUP BY category);
|
|
|
|
-- retrieve the business with the highest number of associated services
|
|
|
|
|
|
|