2893. Calculate Orders Within Each Interval π
DifficultyMedium
Description
Table: Orders
+-------------+------+ | Column Name | Type | +-------------+------+ | minute | int | | order_count | int | +-------------+------+ minute is the primary key for this table. Each row of this table contains the minute and number of orders received during that specific minute. The total number of rows will be a multiple of 6.
Write a query to calculate total orders within each interval. Each interval is defined as a combination of 6 minutes.
- Minutes
1to6fall within interval1, while minutes7to12belong to interval2, and so forth.
Return the result table ordered by interval_no in ascending order.
The result format is in the following example.
Example 1:
Input: Orders table: +--------+-------------+ | minute | order_count | +--------+-------------+ | 1 | 0 | | 2 | 2 | | 3 | 4 | | 4 | 6 | | 5 | 1 | | 6 | 4 | | 7 | 1 | | 8 | 2 | | 9 | 4 | | 10 | 1 | | 11 | 4 | | 12 | 6 | +--------+-------------+ Output: +-------------+--------------+ | interval_no | total_orders | +-------------+--------------+ | 1 | 17 | | 2 | 18 | +-------------+--------------+ Explanation: - Interval number 1 comprises minutes from 1 to 6. The total orders in these six minutes are (0 + 2 + 4 + 6 + 1 + 4) = 17. - Interval number 2 comprises minutes from 7 to 12. The total orders in these six minutes are (1 + 2 + 4 + 1 + 4 + 6) = 18. Returning table orderd by interval_no in ascending order.
Solutions
Solution 1
Thinking
Each block of six minutes is one interval. A ROWS 5 PRECEDING running sum after ordering by minute, kept only when minute is a multiple of \(6\), reports the sum at each interval's right end.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Solution 2
Thinking
The window still walks a prefix. When minutes are consecutive, \(\lfloor(minute+5)/6\rfloor\) groups rows directly and SUM inside each group is the interval total.
1 2 3 4 5 6 | |