SELECT:
1)Recyclable and Low Fat Products
Table: Products
+-------------+---------+ | Column Name | Type | +-------------+---------+ | product_id | int | | low_fats | enum | | recyclable | enum | +-------------+---------+ product_id is the primary key for this table. low_fats is an ENUM of type ('Y', 'N') where 'Y' means this product is low fat and 'N' means it is not. recyclable is an ENUM of types ('Y', 'N') where 'Y' means this product is recyclable and 'N' means it is not.
Write an SQL query to find the ids of products that are both low fat and recyclable.
Return the result table in any order.
SELECT product_id FROM Products WHERE low_fats = 'Y' and recyclable = 'Y';
Click Here to Playground for practice
2)Find Customer Referee
Table: Customer
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | | referee_id | int | +-------------+---------+ id is the primary key column for this table. Each row of this table indicates the id of a customer, their name, and the id of the customer who referred them.
Write an SQL query to report the names of the customer that are not referred by the customer with id = 2
.
Return the result table in any order.
SELECT name FROM Customer WHERE referee_id is null or referee_id <> 2;
Click Here to Playground for practice
3)Big Countries
Table: World
+-------------+---------+ | Column Name | Type | +-------------+---------+ | name | varchar | | continent | varchar | | area | int | | population | int | | gdp | bigint | +-------------+---------+ name is the primary key column for this table. Each row of this table gives information about the name of a country, the continent to which it belongs, its area, the population, and its GDP value.
A country is big if:
- it has an area of at least three million (i.e.,
3000000 km
2), or - it has a population of at least twenty-five million (i.e.,
25000000
).
Write an SQL query to report the name, population, and area of the big countries.
Return the result table in any order.
# Write your MySQL query statement below SELECT name,population,area FROM WORLD WHERE population >= 25000000 or area >= 3000000
Click Here to Playground for practice
4)Article Views I
Table: Views
+---------------+---------+ | Column Name | Type | +---------------+---------+ | article_id | int | | author_id | int | | viewer_id | int | | view_date | date | +---------------+---------+ There is no primary key for this table, it may have duplicate rows. Each row of this table indicates that some viewer viewed an article (written by some author) on some date. Note that equal author_id and viewer_id indicate the same person.
Write an SQL query to find all the authors that viewed at least one of their own articles.
Return the result table sorted by id
in ascending order.
# Write your MySQL query statement below Select distinct(author_id) as id from Views v where author_id in (Select viewer_id from Views v where v.author_id = v.viewer_id) order by 1 asc;
Click Here to Playground for practice
5)Invalid Tweets
Table: Tweets
+----------------+---------+ | Column Name | Type | +----------------+---------+ | tweet_id | int | | content | varchar | +----------------+---------+ tweet_id is the primary key for this table. This table contains all the tweets in a social media app.
Write an SQL query to find the IDs of the invalid tweets. The tweet is invalid if the number of characters used in the content of the tweet is strictly greater than 15
.
Return the result table in any order.
Select t.tweet_id from Tweets t where length(t.content) > 15;
Click Here to Playground for practice
6) Replace Employee ID With The Unique Identifier
Table: Employees
+---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | name | varchar | +---------------+---------+ id is the primary key for this table. Each row of this table contains the id and the name of an employee in a company.
Table: EmployeeUNI
+---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | unique_id | int | +---------------+---------+ (id, unique_id) is the primary key for this table. Each row of this table contains the id and the corresponding unique id of an employee in the company.
Write an SQL query to show the unique ID of each user, If a user does not have a unique ID replace just show null
.
Return the result table in any order.
Select eu.unique_id, e.name from Employees e left join EmployeeUNI eu on e.id = eu.id;
Click Here to Playground for practice
7)Product Sales Analysis I
Table: Sales
+-------------+-------+
| Column Name | Type |
+-------------+-------+
| sale_id | int |
| product_id | int |
| year | int |
| quantity | int |
| price | int |
+-------------+-------+
(sale_id, year) is the primary key of this table.
product_id is a foreign key to Product
table. Each row of this table shows a sale on the product product_id in a certain year. Note that the price is per unit.
Table: Product
+--------------+---------+ | Column Name | Type | +--------------+---------+ | product_id | int | | product_name | varchar | +--------------+---------+ product_id is the primary key of this table. Each row of this table indicates the product name of each product.
Write an SQL query that reports the product_name
, year
, and price
for each sale_id
in the Sales
table.
Return the resulting table in any order.
Select p.product_name, s.year, s.price from Sales s join Product p on s.product_id = p.product_id;
Click Here to Playground for practice
8)Customer Who Visited but Did Not Make Any Transactions
Table: Visits
+-------------+---------+ | Column Name | Type | +-------------+---------+ | visit_id | int | | customer_id | int | +-------------+---------+ visit_id is the primary key for this table. This table contains information about the customers who visited the mall.
Table: Transactions
+----------------+---------+ | Column Name | Type | +----------------+---------+ | transaction_id | int | | visit_id | int | | amount | int | +----------------+---------+ transaction_id is the primary key for this table. This table contains information about the transactions made during the visit_id.
Write a SQL query to find the IDs of the users who visited without making any transactions and the number of times they made these types of visits.
Return the result table sorted in any order.
SELECT customer_id, COUNT(visit_id) AS count_no_trans FROM Visits WHERE visit_id NOT IN ( SELECT visit_id FROM Transactions ) GROUP BY customer_id;
Click Here to Playground for practice
9)Rising Temperature
Table: Weather
+---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | recordDate | date | | temperature | int | +---------------+---------+ id is the primary key for this table. This table contains information about the temperature on a certain day.
Write an SQL query to find all dates’ Id
with higher temperatures compared to its previous dates (yesterday).
Return the result table in any order.
# Write your MySQL query statement below select w1.id from Weather as w1, Weather as w2 where datediff(w1.RecordDate, w2.RecordDate) = 1 and w1.Temperature > w2.Temperature
Click Here to Playground for practice
10)Average Time of Process per Machine
Table: Activity
+----------------+---------+ | Column Name | Type | +----------------+---------+ | machine_id | int | | process_id | int | | activity_type | enum | | timestamp | float | +----------------+---------+ The table shows the user activities for a factory website. (machine_id, process_id, activity_type) is the primary key of this table. machine_id is the ID of a machine. process_id is the ID of a process running on the machine with ID machine_id. activity_type is an ENUM of type ('start', 'end'). timestamp is a float representing the current time in seconds. 'start' means the machine starts the process at the given timestamp and 'end' means the machine ends the process at the given timestamp. The 'start' timestamp will always be before the 'end' timestamp for every (machine_id, process_id) pair.
There is a factory website that has several machines each running the same number of processes. Write an SQL query to find the average time each machine takes to complete a process.
The time to complete a process is the 'end' timestamp
minus the 'start' timestamp
. The average time is calculated by the total time to complete every process on the machine divided by the number of processes that were run.
The resulting table should have the machine_id
along with the average time as processing_time
, which should be rounded to 3 decimal places.
Return the result table in any order.
# Write your MySQL query statement below select machine_id, Round(avg( case when activity_type="start" then timestamp when activity_type="end" then -timestamp end )*(-2),3)as processing_time from activity group by machine_id
Click Here to Playground for practice