+--------------+---------+
|Column Name |Type|+--------------+---------+
| player_id | int || device_id | int || event_date | date || games_played | int |+--------------+---------+
(player_id, event_date) is the primarykey (combination of columns withuniquevalues) of this table.
This table shows the activity of players ofsome games.
Eachrowis a record of a player who logged inand played a number of games (possibly 0) before logging outon someday usingsome device.
The install date of a player is the first login day of that player.
We define day one retention of some date x to be the number of players whose install date is x and they logged back in on the day right after x, divided by the number of players whose install date is x, rounded to 2 decimal places.
Write a solution to report for each install date, the number of players that installed the game on that day, and the day one retention.
Input:
Activity table:+-----------+-----------+------------+--------------+| player_id | device_id | event_date | games_played |+-----------+-----------+------------+--------------+|1|2|2016-03-01|5||1|2|2016-03-02|6||2|3|2017-06-25|1||3|1|2016-03-01|0||3|4|2016-07-03|5|+-----------+-----------+------------+--------------+Output:
+------------+----------+----------------+| install_dt | installs | Day1_retention |+------------+----------+----------------+|2016-03-01|2|0.50||2017-06-25|1|0.00|+------------+----------+----------------+Explanation:
Player 1 and 3 installed the game on 2016-03-01 but only player 1 logged back in on 2016-03-02 so the day 1 retention of 2016-03-01is1/2=0.50Player 2 installed the game on 2017-06-25 but didn't log back in on 2017-06-26 so the day 1 retention of 2017-06-25is0/1=0.00
SELECTDISTINCT buyer_id
FROM Sales
WHERE buyer_id IN (
SELECT buyer_id
FROM Sales s
JOIN Product p ON p.product_id = s.product_id
WHERE product_name ='S8') AND buyer_id NOTIN (
SELECT buyer_id
FROM Sales s
JOIN Product p ON p.product_id = s.product_id
WHERE product_name ='iPhone');
SELECT buyer_id
FROM Sales s
JOIN Product p ON p.product_id = s.product_id
GROUPBY buyer_id
HAVINGSUM(product_name ='S8') >0ANDSUM(product_name ='iPhone') =0;