Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions ConsecutiveNumbers.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
SELECT DISTINCT num AS ConsecutiveNums
FROM (
SELECT num,
LAG(num, 1) OVER (ORDER BY id) AS prev_num,
LEAD(num, 1) OVER (ORDER BY id) AS next_num
FROM Logs
) as sub
WHERE num = prev_num AND num = next_num;
46 changes: 46 additions & 0 deletions NumberOfPassengers.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
-- Solution.1:
WITH CTE AS (
SELECT
p.passenger_id,
p.arrival_time,
MIN(b.arrival_time) AS btime
FROM
passengers p
INNER JOIN
buses b
ON
p.arrival_time <= b.arrival_time
GROUP BY
p.passenger_id
)
SELECT
b.bus_id,
COUNT(c.btime) AS passengers_cnt
FROM
buses b
LEFT JOIN
CTE c
ON
b.arrival_time = c.btime
GROUP BY
b.bus_id
ORDER BY
b.bus_id;

-- Solution.2:
-- SELECT
-- b.bus_id,
-- COUNT(p.passenger_id) AS passengers_cnt
-- FROM
-- Buses b
-- LEFT JOIN
-- Passengers p ON p.arrival_time <= b.arrival_time
-- AND NOT EXISTS (
-- SELECT 1
-- FROM Buses b2
-- WHERE b2.arrival_time < b.arrival_time AND p.arrival_time <= b2.arrival_time
-- )
-- GROUP BY
-- b.bus_id
-- ORDER BY
-- b.bus_id;
33 changes: 33 additions & 0 deletions UserActivity.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
-- Sol.1:

SELECT activity_date AS 'day', COUNT(DISTINCT user_id) AS 'active_users'
FROM activity WHERE activity_date > '2019-06-27' AND activity_date <= '2019-07-27'
GROUP BY 1;

-- Sol.2:

-- SELECT activity_date AS 'day', COUNT(DISTINCT user_id) AS 'active_users'
-- FROM activity WHERE activity_date BETWEEN '2019-06-28' AND '2019-07-27'
-- GROUP BY 1;

-- Sol.3:

-- SELECT activity_date AS 'day', COUNT(DISTINCT user_id) AS 'active_users'
-- FROM activity WHERE DATEDIFF('2019-07-27', activity_date) >= 0
-- AND DATEDIFF('2019-07-27', activity_date) < 30
-- GROUP BY 1;

-- Sol.4:

-- SELECT activity_date AS 'day', COUNT(DISTINCT user_id) AS 'active_users'
-- FROM activity WHERE activity_date BETWEEN DATE_SUB('2019-07-27', INTERVAL 29 DAY)
-- AND '2019-07-27'
-- GROUP BY 1;


-- Sol.5:

-- SELECT activity_date AS 'day', COUNT(DISTINCT user_id) AS 'active_users'
-- FROM activity WHERE activity_date BETWEEN DATE_ADD('2019-07-27', INTERVAL -29 DAY)
-- AND '2019-07-27'
-- GROUP BY 1;