All problems

The Traffic Calendar

easySQLGroupByDates

Kindled's small support team is rostered against how busy the site is, and the rota is drawn a week at a time. The scheduler wants tracked activity totalled per calendar day for the first seven days that recorded anything, read in date order so the shape of the week is visible. Later days are next week's problem and should not appear.

events — one row per tracked action. user_id points at a row in users. event_type is one of signup, view_product, add_to_cart and purchase. event_date is the day the action happened. Nothing guarantees a person produces all four kinds, or any particular number of rows.

id user_id event_type event_date
1 1 signup 2023-05-01
2 1 view_product 2023-05-01
3 1 add_to_cart 2023-05-02
4 1 purchase 2023-05-03
5 2 signup 2023-05-02
6 2 view_product 2023-05-02
7 3 signup 2023-05-03
8 3 view_product 2023-05-03
9 3 add_to_cart 2023-05-04
10 4 signup 2023-05-04
11 4 view_product 2023-05-05
12 4 add_to_cart 2023-05-05
13 4 purchase 2023-05-06
14 5 signup 2023-05-05
15 6 signup 2023-05-06
16 6 view_product 2023-05-06
17 7 signup 2023-05-07
18 7 view_product 2023-05-07
19 7 add_to_cart 2023-05-08
20 7 purchase 2023-05-09
21 8 signup 2023-05-08

The table already exists in the database — there is nothing to create or load.

Task: Write a query that returns at most seven rows, with columns event_date and n — the number of tracked actions on that day — covering the seven earliest days on which anything at all was recorded, oldest day first.

Example output — shape only, on invented days. The rows run oldest first, not busiest first:

event_date n
2022-11-01 11
2022-11-02 14
2022-11-03 9
2022-11-04 12
2022-11-05 16
2022-11-06 10
2022-11-07 13

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…