From b36f4b1d2f56ee1197991fb7b0a5961dabdf9537 Mon Sep 17 00:00:00 2001 From: Zaid Roshan Mayers Date: Fri, 13 Dec 2024 21:48:15 -0500 Subject: [PATCH 1/3] Added solutions for NumberOfPassengers.sql --- NumberOfPassengers.sql | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 NumberOfPassengers.sql diff --git a/NumberOfPassengers.sql b/NumberOfPassengers.sql new file mode 100644 index 0000000..5e1b81c --- /dev/null +++ b/NumberOfPassengers.sql @@ -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; \ No newline at end of file From 9f8d320c28b60349c856c6cd6f86c08a6a90e148 Mon Sep 17 00:00:00 2001 From: Zaid Roshan Mayers Date: Fri, 13 Dec 2024 21:56:24 -0500 Subject: [PATCH 2/3] Added solutions for UserActivity.sql --- UserActivity.sql | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 UserActivity.sql diff --git a/UserActivity.sql b/UserActivity.sql new file mode 100644 index 0000000..206d677 --- /dev/null +++ b/UserActivity.sql @@ -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; From 80f243bae4a56588eaf4e3c697038ec1237d2719 Mon Sep 17 00:00:00 2001 From: Zaid Roshan Mayers Date: Mon, 16 Dec 2024 19:50:16 -0800 Subject: [PATCH 3/3] Added solutions for ConsecutiveNumbers.sql --- ConsecutiveNumbers.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 ConsecutiveNumbers.sql diff --git a/ConsecutiveNumbers.sql b/ConsecutiveNumbers.sql new file mode 100644 index 0000000..3c20649 --- /dev/null +++ b/ConsecutiveNumbers.sql @@ -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;