Structured query language provides users the ability to compute aggregate values based on sequences of rows and the values the rows contain. A sequence of rows is commonly referred to as the window. The rows belonging to each window and the ordering of rows within each window are based on user-specified instructions. The significance of being able to combine window and aggregate functions is it allows users to easily calculate period-based measures such as running totals and moving averages. Additionally, if desired, the combination allows aggregate values to be computed without changing the level of detail or granularity of the data. Let us explore a few of real-world problems and their corresponding solutions to highlight the power of this feature.
Cupcake Shop
Suppose you have recently joined an analytics team at a world-renowned cupcake shop with several locations across the globe. The company recently opened up a new location and management has asked you to provide answers or a report addressing the following:
– On which date did the new location sell its 10,000th cupcake?
– Can a report be provided containing 7-day moving averages for each of our cupcake flavors in terms of quantity sold? The report should contain the same level of detail as how the data is currently stored (i.e., one row per report date and flavor along with the corresponding quantity sold). An attribute containing the 7-day moving average values should be included.
– Can a daily cupcake flavor performance report be provided containing a comparison between each day’s cupcake sales and the all-time high in terms of number of cupcakes sold per flavor? The report should contain the report date, flavor, quantity sold, the maximum quantity ever sold for the flavor, and the difference between those two values.
The data you are working with can be found in the table below. This fictional data set can be generated using the code found in the Data Set Generation Code section. To review the code, click on the icon to the left of the section’s header. To hide the code, click the icon again. To follow along and practice using this data set, you can copy and paste this code into livesql.oracle.com or your preferred query editor. Keep in mind, if you are not using an Oracle product, then slight changes to the code may be required for it to run.
| report_date | flavor | quantity_sold |
|---|---|---|
| 08-NOV-23 | Chocolate | 10 |
| 08-NOV-23 | Lemon | 69 |
| 08-NOV-23 | Vanilla | 55 |
| 08-NOV-23 | Red Velvet | 49 |
| 09-NOV-23 | Chocolate | 18 |
| 09-NOV-23 | Red Velvet | 68 |
| 09-NOV-23 | Lemon | 45 |
| 09-NOV-23 | Vanilla | 83 |
| 10-NOV-23 | Red Velvet | 34 |
| 10-NOV-23 | Vanilla | 97 |
| 10-NOV-23 | Chocolate | 95 |
| 10-NOV-23 | Lemon | 52 |
| 11-NOV-23 | Chocolate | 7 |
| 11-NOV-23 | Vanilla | 61 |
| 11-NOV-23 | Lemon | 14 |
| 11-NOV-23 | Red Velvet | 39 |
| 12-NOV-23 | Chocolate | 58 |
| 12-NOV-23 | Lemon | 90 |
| 12-NOV-23 | Vanilla | 12 |
| 12-NOV-23 | Red Velvet | 92 |
| 13-NOV-23 | Chocolate | 52 |
| 13-NOV-23 | Red Velvet | 62 |
| 13-NOV-23 | Lemon | 84 |
| 13-NOV-23 | Vanilla | 50 |
| 14-NOV-23 | Red Velvet | 87 |
| 14-NOV-23 | Chocolate | 85 |
| 14-NOV-23 | Vanilla | 52 |
| 14-NOV-23 | Lemon | 67 |
| 15-NOV-23 | Chocolate | 52 |
| 15-NOV-23 | Vanilla | 80 |
| 15-NOV-23 | Red Velvet | 86 |
| 15-NOV-23 | Lemon | 28 |
| 16-NOV-23 | Vanilla | 44 |
| 16-NOV-23 | Red Velvet | 9 |
| 16-NOV-23 | Lemon | 78 |
| 16-NOV-23 | Chocolate | 1 |
| 17-NOV-23 | Chocolate | 94 |
| 17-NOV-23 | Red Velvet | 4 |
| 17-NOV-23 | Lemon | 97 |
| 17-NOV-23 | Vanilla | 63 |
| 18-NOV-23 | Red Velvet | 44 |
| 18-NOV-23 | Vanilla | 14 |
| 18-NOV-23 | Chocolate | 74 |
| 18-NOV-23 | Lemon | 21 |
| 19-NOV-23 | Chocolate | 52 |
| 19-NOV-23 | Red Velvet | 8 |
| 19-NOV-23 | Lemon | 7 |
| 19-NOV-23 | Vanilla | 78 |
| 20-NOV-23 | Chocolate | 53 |
| 20-NOV-23 | Lemon | 90 |
| 20-NOV-23 | Vanilla | 69 |
| 20-NOV-23 | Red Velvet | 35 |
| 21-NOV-23 | Chocolate | 17 |
| 21-NOV-23 | Red Velvet | 14 |
| 21-NOV-23 | Lemon | 77 |
| 21-NOV-23 | Vanilla | 47 |
| 22-NOV-23 | Red Velvet | 45 |
| 22-NOV-23 | Vanilla | 67 |
| 22-NOV-23 | Chocolate | 44 |
| 22-NOV-23 | Lemon | 71 |
| 23-NOV-23 | Chocolate | 58 |
| 23-NOV-23 | Vanilla | 55 |
| 23-NOV-23 | Lemon | 71 |
| 23-NOV-23 | Red Velvet | 78 |
| 24-NOV-23 | Vanilla | 81 |
| 24-NOV-23 | Red Velvet | 53 |
| 24-NOV-23 | Lemon | 12 |
| 24-NOV-23 | Chocolate | 41 |
| 25-NOV-23 | Chocolate | 38 |
| 25-NOV-23 | Red Velvet | 53 |
| 25-NOV-23 | Lemon | 32 |
| 25-NOV-23 | Vanilla | 30 |
| 26-NOV-23 | Red Velvet | 77 |
| 26-NOV-23 | Vanilla | 89 |
| 26-NOV-23 | Chocolate | 30 |
| 26-NOV-23 | Lemon | 1 |
| 27-NOV-23 | Chocolate | 50 |
| 27-NOV-23 | Red Velvet | 35 |
| 27-NOV-23 | Lemon | 86 |
| 27-NOV-23 | Vanilla | 5 |
| 28-NOV-23 | Chocolate | 85 |
| 28-NOV-23 | Lemon | 16 |
| 28-NOV-23 | Vanilla | 17 |
| 28-NOV-23 | Red Velvet | 6 |
| 29-NOV-23 | Chocolate | 20 |
| 29-NOV-23 | Red Velvet | 2 |
| 29-NOV-23 | Lemon | 14 |
| 29-NOV-23 | Vanilla | 97 |
| 30-NOV-23 | Red Velvet | 92 |
| 30-NOV-23 | Chocolate | 55 |
| 30-NOV-23 | Vanilla | 20 |
| 30-NOV-23 | Lemon | 97 |
| 01-DEC-23 | Red Velvet | 10 |
| 01-DEC-23 | Lemon | 73 |
| 01-DEC-23 | Vanilla | 64 |
| 01-DEC-23 | Chocolate | 84 |
| 02-DEC-23 | Chocolate | 77 |
| 02-DEC-23 | Red Velvet | 38 |
| 02-DEC-23 | Lemon | 43 |
| 02-DEC-23 | Vanilla | 85 |
| 03-DEC-23 | Chocolate | 39 |
| 03-DEC-23 | Vanilla | 46 |
| 03-DEC-23 | Red Velvet | 42 |
| 03-DEC-23 | Lemon | 23 |
| 04-DEC-23 | Red Velvet | 63 |
| 04-DEC-23 | Vanilla | 35 |
| 04-DEC-23 | Chocolate | 92 |
| 04-DEC-23 | Lemon | 19 |
| 05-DEC-23 | Red Velvet | 45 |
| 05-DEC-23 | Vanilla | 20 |
| 05-DEC-23 | Chocolate | 51 |
| 05-DEC-23 | Lemon | 0 |
| 06-DEC-23 | Lemon | 48 |
| 06-DEC-23 | Red Velvet | 76 |
| 06-DEC-23 | Vanilla | 23 |
| 06-DEC-23 | Chocolate | 16 |
| 07-DEC-23 | Chocolate | 29 |
| 07-DEC-23 | Vanilla | 95 |
| 07-DEC-23 | Red Velvet | 45 |
| 07-DEC-23 | Lemon | 5 |
| 08-DEC-23 | Vanilla | 57 |
| 08-DEC-23 | Red Velvet | 43 |
| 08-DEC-23 | Lemon | 10 |
| 08-DEC-23 | Chocolate | 55 |
| 09-DEC-23 | Chocolate | 63 |
| 09-DEC-23 | Red Velvet | 88 |
| 09-DEC-23 | Lemon | 29 |
| 09-DEC-23 | Vanilla | 92 |
| 10-DEC-23 | Red Velvet | 26 |
| 10-DEC-23 | Vanilla | 96 |
| 10-DEC-23 | Chocolate | 94 |
| 10-DEC-23 | Lemon | 57 |
| 11-DEC-23 | Chocolate | 65 |
| 11-DEC-23 | Red Velvet | 61 |
| 11-DEC-23 | Lemon | 35 |
| 11-DEC-23 | Vanilla | 29 |
| 12-DEC-23 | Chocolate | 99 |
| 12-DEC-23 | Lemon | 58 |
| 12-DEC-23 | Vanilla | 62 |
| 12-DEC-23 | Red Velvet | 42 |
| 13-DEC-23 | Chocolate | 68 |
| 13-DEC-23 | Red Velvet | 52 |
| 13-DEC-23 | Lemon | 97 |
| 13-DEC-23 | Vanilla | 25 |
| 14-DEC-23 | Red Velvet | 78 |
| 14-DEC-23 | Vanilla | 99 |
| 14-DEC-23 | Chocolate | 17 |
| 14-DEC-23 | Lemon | 81 |
| 15-DEC-23 | Chocolate | 80 |
| 15-DEC-23 | Vanilla | 92 |
| 15-DEC-23 | Lemon | 81 |
| 15-DEC-23 | Red Velvet | 76 |
| 16-DEC-23 | Vanilla | 82 |
| 16-DEC-23 | Red Velvet | 59 |
| 16-DEC-23 | Lemon | 82 |
| 16-DEC-23 | Chocolate | 29 |
| 17-DEC-23 | Chocolate | 55 |
| 17-DEC-23 | Red Velvet | 86 |
| 17-DEC-23 | Lemon | 7 |
| 17-DEC-23 | Vanilla | 10 |
| 18-DEC-23 | Red Velvet | 93 |
| 18-DEC-23 | Vanilla | 30 |
| 18-DEC-23 | Chocolate | 2 |
| 18-DEC-23 | Lemon | 4 |
| 19-DEC-23 | Chocolate | 81 |
| 19-DEC-23 | Red Velvet | 69 |
| 19-DEC-23 | Lemon | 48 |
| 19-DEC-23 | Vanilla | 25 |
| 20-DEC-23 | Chocolate | 88 |
| 20-DEC-23 | Lemon | 95 |
| 20-DEC-23 | Vanilla | 17 |
| 20-DEC-23 | Red Velvet | 45 |
| 21-DEC-23 | Chocolate | 30 |
| 21-DEC-23 | Red Velvet | 18 |
| 21-DEC-23 | Lemon | 64 |
| 21-DEC-23 | Vanilla | 37 |
| 22-DEC-23 | Red Velvet | 98 |
| 22-DEC-23 | Chocolate | 100 |
| 22-DEC-23 | Vanilla | 73 |
| 22-DEC-23 | Lemon | 61 |
| 23-DEC-23 | Chocolate | 1 |
| 23-DEC-23 | Vanilla | 52 |
| 23-DEC-23 | Red Velvet | 5 |
| 23-DEC-23 | Lemon | 81 |
| 24-DEC-23 | Red Velvet | 2 |
| 24-DEC-23 | Vanilla | 63 |
| 24-DEC-23 | Chocolate | 33 |
| 24-DEC-23 | Lemon | 21 |
| 25-DEC-23 | Lemon | 12 |
| 25-DEC-23 | Red Velvet | 61 |
| 25-DEC-23 | Vanilla | 40 |
| 25-DEC-23 | Chocolate | 78 |
| 26-DEC-23 | Chocolate | 9 |
| 26-DEC-23 | Vanilla | 81 |
| 26-DEC-23 | Red Velvet | 16 |
| 26-DEC-23 | Lemon | 48 |
| 27-DEC-23 | Chocolate | 51 |
| 27-DEC-23 | Vanilla | 30 |
| 27-DEC-23 | Red Velvet | 7 |
| 27-DEC-23 | Lemon | 89 |
| 28-DEC-23 | Red Velvet | 0 |
| 28-DEC-23 | Vanilla | 44 |
| 28-DEC-23 | Chocolate | 81 |
| 28-DEC-23 | Lemon | 16 |
| 29-DEC-23 | Chocolate | 80 |
| 29-DEC-23 | Lemon | 95 |
| 29-DEC-23 | Vanilla | 28 |
| 29-DEC-23 | Red Velvet | 87 |
| 30-DEC-23 | Chocolate | 74 |
| 30-DEC-23 | Red Velvet | 80 |
| 30-DEC-23 | Lemon | 37 |
| 30-DEC-23 | Vanilla | 67 |
| 31-DEC-23 | Red Velvet | 49 |
| 31-DEC-23 | Vanilla | 14 |
| 31-DEC-23 | Chocolate | 27 |
| 31-DEC-23 | Lemon | 74 |
| 01-JAN-24 | Red Velvet | 13 |
| 01-JAN-24 | Vanilla | 21 |
| 01-JAN-24 | Chocolate | 38 |
| 01-JAN-24 | Lemon | 45 |
| 02-JAN-24 | Lemon | 81 |
| 02-JAN-24 | Red Velvet | 18 |
| 02-JAN-24 | Vanilla | 50 |
| 02-JAN-24 | Chocolate | 43 |
| 03-JAN-24 | Chocolate | 83 |
| 03-JAN-24 | Vanilla | 43 |
| 03-JAN-24 | Lemon | 28 |
| 03-JAN-24 | Red Velvet | 16 |
| 04-JAN-24 | Red Velvet | 51 |
| 04-JAN-24 | Vanilla | 1 |
| 04-JAN-24 | Chocolate | 82 |
| 04-JAN-24 | Lemon | 23 |
| 05-JAN-24 | Lemon | 61 |
| 05-JAN-24 | Red Velvet | 94 |
| 05-JAN-24 | Chocolate | 6 |
| 05-JAN-24 | Vanilla | 33 |
| 06-JAN-24 | Red Velvet | 3 |
| 06-JAN-24 | Lemon | 32 |
| 06-JAN-24 | Vanilla | 88 |
| 06-JAN-24 | Chocolate | 95 |
| 07-JAN-24 | Red Velvet | 50 |
| 07-JAN-24 | Vanilla | 11 |
| 07-JAN-24 | Chocolate | 74 |
| 07-JAN-24 | Lemon | 57 |
| 08-JAN-24 | Red Velvet | 22 |
| 08-JAN-24 | Lemon | 81 |
| 08-JAN-24 | Vanilla | 27 |
| 08-JAN-24 | Chocolate | 5 |
| 09-JAN-24 | Red Velvet | 64 |
| 09-JAN-24 | Vanilla | 66 |
| 09-JAN-24 | Chocolate | 5 |
| 09-JAN-24 | Lemon | 89 |
| 10-JAN-24 | Red Velvet | 80 |
| 10-JAN-24 | Lemon | 84 |
| 10-JAN-24 | Vanilla | 50 |
| 10-JAN-24 | Chocolate | 35 |
| 11-JAN-24 | Chocolate | 89 |
| 11-JAN-24 | Vanilla | 47 |
| 11-JAN-24 | Red Velvet | 51 |
| 11-JAN-24 | Lemon | 40 |
| 12-JAN-24 | Lemon | 54 |
| 12-JAN-24 | Red Velvet | 24 |
| 12-JAN-24 | Vanilla | 93 |
| 12-JAN-24 | Chocolate | 43 |
| 13-JAN-24 | Lemon | 22 |
| 13-JAN-24 | Red Velvet | 17 |
| 13-JAN-24 | Chocolate | 100 |
| 13-JAN-24 | Vanilla | 62 |
| 14-JAN-24 | Lemon | 69 |
| 14-JAN-24 | Red Velvet | 93 |
| 14-JAN-24 | Vanilla | 100 |
| 14-JAN-24 | Chocolate | 40 |
| 15-JAN-24 | Lemon | 25 |
| 15-JAN-24 | Red Velvet | 57 |
| 15-JAN-24 | Chocolate | 75 |
| 15-JAN-24 | Vanilla | 72 |
| 16-JAN-24 | Lemon | 34 |
| 16-JAN-24 | Red Velvet | 70 |
| 16-JAN-24 | Vanilla | 94 |
| 16-JAN-24 | Chocolate | 94 |
| 17-JAN-24 | Chocolate | 35 |
| 17-JAN-24 | Vanilla | 35 |
| 17-JAN-24 | Red Velvet | 93 |
| 17-JAN-24 | Lemon | 77 |
| 18-JAN-24 | Red Velvet | 78 |
| 18-JAN-24 | Vanilla | 90 |
| 18-JAN-24 | Chocolate | 17 |
| 18-JAN-24 | Lemon | 97 |
| 19-JAN-24 | Red Velvet | 16 |
| 19-JAN-24 | Vanilla | 44 |
| 19-JAN-24 | Chocolate | 33 |
| 19-JAN-24 | Lemon | 71 |
| 20-JAN-24 | Red Velvet | 96 |
| 20-JAN-24 | Vanilla | 95 |
| 20-JAN-24 | Chocolate | 17 |
| 20-JAN-24 | Lemon | 35 |
| 21-JAN-24 | Red Velvet | 55 |
| 21-JAN-24 | Vanilla | 2 |
| 21-JAN-24 | Chocolate | 5 |
| 21-JAN-24 | Lemon | 24 |
| 22-JAN-24 | Red Velvet | 57 |
| 22-JAN-24 | Lemon | 88 |
| 22-JAN-24 | Vanilla | 11 |
| 22-JAN-24 | Chocolate | 96 |
| 23-JAN-24 | Red Velvet | 74 |
| 23-JAN-24 | Vanilla | 70 |
| 23-JAN-24 | Chocolate | 48 |
| 23-JAN-24 | Lemon | 88 |
| 24-JAN-24 | Red Velvet | 72 |
| 24-JAN-24 | Lemon | 84 |
| 24-JAN-24 | Vanilla | 45 |
| 24-JAN-24 | Chocolate | 23 |
| 25-JAN-24 | Lemon | 81 |
| 25-JAN-24 | Red Velvet | 31 |
| 25-JAN-24 | Vanilla | 44 |
| 25-JAN-24 | Chocolate | 21 |
| 26-JAN-24 | Red Velvet | 97 |
| 26-JAN-24 | Vanilla | 49 |
| 26-JAN-24 | Chocolate | 5 |
| 26-JAN-24 | Lemon | 90 |
| 27-JAN-24 | Lemon | 93 |
| 27-JAN-24 | Red Velvet | 7 |
| 27-JAN-24 | Chocolate | 63 |
| 27-JAN-24 | Vanilla | 97 |
| 28-JAN-24 | Lemon | 4 |
| 28-JAN-24 | Red Velvet | 42 |
| 28-JAN-24 | Chocolate | 29 |
| 28-JAN-24 | Vanilla | 28 |
| 29-JAN-24 | Lemon | 70 |
| 29-JAN-24 | Red Velvet | 98 |
| 29-JAN-24 | Vanilla | 5 |
| 29-JAN-24 | Chocolate | 87 |
| 30-JAN-24 | Lemon | 87 |
| 30-JAN-24 | Red Velvet | 21 |
| 30-JAN-24 | Chocolate | 54 |
| 30-JAN-24 | Vanilla | 48 |
| 31-JAN-24 | Lemon | 11 |
| 31-JAN-24 | Red Velvet | 4 |
| 31-JAN-24 | Vanilla | 92 |
| 31-JAN-24 | Chocolate | 76 |
| 01-FEB-24 | Red Velvet | 93 |
| 01-FEB-24 | Lemon | 88 |
| 01-FEB-24 | Vanilla | 68 |
| 01-FEB-24 | Chocolate | 65 |
| 02-FEB-24 | Chocolate | 72 |
| 02-FEB-24 | Red Velvet | 37 |
| 02-FEB-24 | Lemon | 24 |
| 02-FEB-24 | Vanilla | 36 |
| 03-FEB-24 | Chocolate | 96 |
| 03-FEB-24 | Vanilla | 89 |
| 03-FEB-24 | Red Velvet | 52 |
| 03-FEB-24 | Lemon | 91 |
| 04-FEB-24 | Red Velvet | 4 |
| 04-FEB-24 | Vanilla | 100 |
| 04-FEB-24 | Chocolate | 1 |
| 04-FEB-24 | Lemon | 86 |
| 05-FEB-24 | Red Velvet | 91 |
| 05-FEB-24 | Vanilla | 48 |
| 05-FEB-24 | Chocolate | 34 |
| 05-FEB-24 | Lemon | 71 |
| 06-FEB-24 | Lemon | 63 |
| 06-FEB-24 | Red Velvet | 65 |
| 06-FEB-24 | Vanilla | 57 |
| 06-FEB-24 | Chocolate | 7 |
Data Set Generation Code
Keep in mind, the data set you generate using the code below may contain different quantity sold values due to the use of the DBMS_RANDOM.VALUE function.
EXEC DBMS_RANDOM.SEED(42);
CREATE TABLE daily_report AS
WITH daily_report (report_date, flavor, quantity_sold) AS (
SELECT
daily_sale.report_date,
data_template.flavor_value,
daily_sale.quantity_sold
FROM (
SELECT
'Chocolate' AS flavor_1,
'Vanilla' AS flavor_2,
'Red Velvet' AS flavor_3,
'Lemon' AS flavor_4
FROM
dual
)
UNPIVOT (
flavor_value FOR flavor_column IN (
"FLAVOR_1", "FLAVOR_2",
"FLAVOR_3", "FLAVOR_4")
) data_template
CROSS JOIN (
SELECT
TRUNC(SYSDATE) AS report_date,
FLOOR(DBMS_RANDOM.VALUE(0, 101)) AS quantity_sold
FROM
dual
) daily_sale
UNION ALL
SELECT
daily_report.report_date - INTERVAL '1' DAY,
daily_report.flavor,
FLOOR(DBMS_RANDOM.VALUE(0, 101))
FROM
daily_report
WHERE
daily_report.report_date > TRUNC(SYSDATE) - INTERVAL '90' DAY
)
SELECT
daily_report.report_date,
daily_report.flavor,
daily_report.quantity_sold
FROM
daily_report;
Getting back to management’s questions, how can SQL be used to generate the answers? Let tackle each question in turn, starting with determining the date for which the 10,000th cupcake was sold.
On which date did the new location sell its 10,000th cupcake?
To determine the date for which the 10,000th cupcake was sold, the number of cupcakes sold per day requires computing. This can be achieved by using the aggregate function, SUM, with a GROUP BY clause specifying to group the rows by report date values. The query described so far can be found below and corresponding output can be found below.
SELECT
daily_report.report_date,
SUM(daily_report.quantity_sold) AS quantity_sold
FROM
daily_report
GROUP BY
daily_report.report_date;
| report_date | quantity_sold |
|---|---|
| 08-NOV-23 | 183 |
| 09-NOV-23 | 214 |
| 10-NOV-23 | 278 |
| 11-NOV-23 | 121 |
| 12-NOV-23 | 252 |
| 13-NOV-23 | 248 |
| 14-NOV-23 | 291 |
| 15-NOV-23 | 246 |
| 16-NOV-23 | 132 |
| 17-NOV-23 | 258 |
| 18-NOV-23 | 153 |
| 19-NOV-23 | 145 |
| 20-NOV-23 | 247 |
| 21-NOV-23 | 155 |
| 22-NOV-23 | 227 |
| 23-NOV-23 | 262 |
| 24-NOV-23 | 187 |
| 25-NOV-23 | 153 |
| 26-NOV-23 | 197 |
| 27-NOV-23 | 176 |
| 28-NOV-23 | 124 |
| 29-NOV-23 | 133 |
| 30-NOV-23 | 264 |
| 01-DEC-23 | 231 |
| 02-DEC-23 | 243 |
| 03-DEC-23 | 150 |
| 04-DEC-23 | 209 |
| 05-DEC-23 | 116 |
| 06-DEC-23 | 163 |
| 07-DEC-23 | 174 |
| 08-DEC-23 | 165 |
| 09-DEC-23 | 272 |
| 10-DEC-23 | 273 |
| 11-DEC-23 | 190 |
| 12-DEC-23 | 261 |
| 13-DEC-23 | 242 |
| 14-DEC-23 | 275 |
| 15-DEC-23 | 329 |
| 16-DEC-23 | 252 |
| 17-DEC-23 | 158 |
| 18-DEC-23 | 129 |
| 19-DEC-23 | 223 |
| 20-DEC-23 | 245 |
| 21-DEC-23 | 149 |
| 22-DEC-23 | 332 |
| 23-DEC-23 | 139 |
| 24-DEC-23 | 119 |
| 25-DEC-23 | 191 |
| 26-DEC-23 | 154 |
| 27-DEC-23 | 177 |
| 28-DEC-23 | 141 |
| 29-DEC-23 | 290 |
| 30-DEC-23 | 258 |
| 31-DEC-23 | 164 |
| 01-JAN-24 | 117 |
| 02-JAN-24 | 192 |
| 03-JAN-24 | 170 |
| 04-JAN-24 | 157 |
| 05-JAN-24 | 194 |
| 06-JAN-24 | 218 |
| 07-JAN-24 | 192 |
| 08-JAN-24 | 135 |
| 09-JAN-24 | 224 |
| 10-JAN-24 | 249 |
| 11-JAN-24 | 227 |
| 12-JAN-24 | 214 |
| 13-JAN-24 | 201 |
| 14-JAN-24 | 302 |
| 15-JAN-24 | 229 |
| 16-JAN-24 | 292 |
| 17-JAN-24 | 240 |
| 18-JAN-24 | 282 |
| 19-JAN-24 | 164 |
| 20-JAN-24 | 243 |
| 21-JAN-24 | 86 |
| 22-JAN-24 | 252 |
| 23-JAN-24 | 280 |
| 24-JAN-24 | 224 |
| 25-JAN-24 | 177 |
| 26-JAN-24 | 241 |
| 27-JAN-24 | 260 |
| 28-JAN-24 | 103 |
| 29-JAN-24 | 260 |
| 30-JAN-24 | 210 |
| 31-JAN-24 | 183 |
| 01-FEB-24 | 314 |
| 02-FEB-24 | 169 |
| 03-FEB-24 | 328 |
| 04-FEB-24 | 191 |
| 05-FEB-24 | 244 |
| 06-FEB-24 | 192 |
After computing the quantity sold value for each day the cupcake shop has been open, a running total needs to be computed across the report date values. To compute the running total, the summation of quantity sold values needs to be wrapped within another SUM and an OVER clause specifying one implicit partition (i.e., the entire data set) is needed. Within the OVER clause, a window clause stating to compute each day’s running daily total value based on the sum of the quantity sold values for all days (i.e., rows) prior to the current row’s day value and the current row’s day value is required. When computing the running total, it is important to order the report date values in ascending order within the OVER clause. This will ensure the running total starts with the first day the shop was open. For clarity, see the augmented query and corresponding result set below.
SELECT
daily_report.report_date,
SUM(SUM(daily_report.quantity_sold)) OVER (
ORDER BY daily_report.report_date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS running_daily_total
FROM
daily_report
GROUP BY
daily_report.report_date;
| report_date | running_daily_total |
|---|---|
| 08-NOV-23 | 183 |
| 09-NOV-23 | 397 |
| 10-NOV-23 | 675 |
| 11-NOV-23 | 796 |
| 12-NOV-23 | 1048 |
| 13-NOV-23 | 1296 |
| 14-NOV-23 | 1587 |
| 15-NOV-23 | 1833 |
| 16-NOV-23 | 1965 |
| 17-NOV-23 | 2223 |
| 18-NOV-23 | 2376 |
| 19-NOV-23 | 2521 |
| 20-NOV-23 | 2768 |
| 21-NOV-23 | 2923 |
| 22-NOV-23 | 3150 |
| 23-NOV-23 | 3412 |
| 24-NOV-23 | 3599 |
| 25-NOV-23 | 3752 |
| 26-NOV-23 | 3949 |
| 27-NOV-23 | 4125 |
| 28-NOV-23 | 4249 |
| 29-NOV-23 | 4382 |
| 30-NOV-23 | 4646 |
| 01-DEC-23 | 4877 |
| 02-DEC-23 | 5120 |
| 03-DEC-23 | 5270 |
| 04-DEC-23 | 5479 |
| 05-DEC-23 | 5595 |
| 06-DEC-23 | 5758 |
| 07-DEC-23 | 5932 |
| 08-DEC-23 | 6097 |
| 09-DEC-23 | 6369 |
| 10-DEC-23 | 6642 |
| 11-DEC-23 | 6832 |
| 12-DEC-23 | 7093 |
| 13-DEC-23 | 7335 |
| 14-DEC-23 | 7610 |
| 15-DEC-23 | 7939 |
| 16-DEC-23 | 8191 |
| 17-DEC-23 | 8349 |
| 18-DEC-23 | 8478 |
| 19-DEC-23 | 8701 |
| 20-DEC-23 | 8946 |
| 21-DEC-23 | 9095 |
| 22-DEC-23 | 9427 |
| 23-DEC-23 | 9566 |
| 24-DEC-23 | 9685 |
| 25-DEC-23 | 9876 |
| 26-DEC-23 | 10030 |
| 27-DEC-23 | 10207 |
| 28-DEC-23 | 10348 |
| 29-DEC-23 | 10638 |
| 30-DEC-23 | 10896 |
| 31-DEC-23 | 11060 |
| 01-JAN-24 | 11177 |
| 02-JAN-24 | 11369 |
| 03-JAN-24 | 11539 |
| 04-JAN-24 | 11696 |
| 05-JAN-24 | 11890 |
| 06-JAN-24 | 12108 |
| 07-JAN-24 | 12300 |
| 08-JAN-24 | 12435 |
| 09-JAN-24 | 12659 |
| 10-JAN-24 | 12908 |
| 11-JAN-24 | 13135 |
| 12-JAN-24 | 13349 |
| 13-JAN-24 | 13550 |
| 14-JAN-24 | 13852 |
| 15-JAN-24 | 14081 |
| 16-JAN-24 | 14373 |
| 17-JAN-24 | 14613 |
| 18-JAN-24 | 14895 |
| 19-JAN-24 | 15059 |
| 20-JAN-24 | 15302 |
| 21-JAN-24 | 15388 |
| 22-JAN-24 | 15640 |
| 23-JAN-24 | 15920 |
| 24-JAN-24 | 16144 |
| 25-JAN-24 | 16321 |
| 26-JAN-24 | 16562 |
| 27-JAN-24 | 16822 |
| 28-JAN-24 | 16925 |
| 29-JAN-24 | 17185 |
| 30-JAN-24 | 17395 |
| 31-JAN-24 | 17578 |
| 01-FEB-24 | 17892 |
| 02-FEB-24 | 18061 |
| 03-FEB-24 | 18389 |
| 04-FEB-24 | 18580 |
| 05-FEB-24 | 18824 |
| 06-FEB-24 | 19016 |
By placing the query above in parenthesis and treating it as a derived table, the first date for which the running daily total value is greater than or equal to 10,000 can be retrieved using Oracle’s FETCH clause. To ensure the correct date value is fetched, the derived table’s report date values need to be ordered in ascending order. See the final query and corresponding output below.
SELECT
augmented_daily_report.report_date
FROM (
SELECT
daily_report.report_date,
SUM(SUM(daily_report.quantity_sold)) OVER (
ORDER BY daily_report.report_date
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS running_daily_total
FROM
daily_report
GROUP BY
daily_report.report_date
) augmented_daily_report
WHERE
augmented_daily_report.running_daily_total > 10000
ORDER BY
augmented_daily_report.report_date
FETCH FIRST ROW ONLY;
| report_date |
|---|
| 26-DEC-23 |
The solution above makes use of Oracle’s FETCH clause. This clause should not be used when the row or rows returned can vary from execution to execution. For example, if there were multiple rows within the derived table, augmented_daily_report, with the date value of December 26th, 2023, then the specific row returned could vary. This would be noticeable with the corresponding running daily total values included in the output. As a result, the row returned may not be the one containing the lowest value meeting or exceeding the value of 10,000. For scenarios where the rows returned can vary due to ties in values, use DENSE_RANK or an ORDER BY clause resulting in consistent and predictable results.
7-day moving average
Generating a report containing 7-day moving averages for each cupcake flavor is straightforward compared to the previous problem. This can be achieved using the average function with the quantity sold attribute as its argument and a very specific OVER clause. Because the goal is to compute the 7-day moving average values for each cupcake flavor, the rows need to be partitioned by the flavor attribute. This will ensure each average is being computed using the quantity sold values corresponding to the specific flavor. Additionally, the OVER clause needs to consist of an ORDER BY clause to ensure each average value is being computed based on successive days. The final touch is to add a window clause specifying to compute each row’s average value based the quantity sold value within the row and those values within each of the six rows prior to it. Due to the way the data is structured in the daily report table and the PARTITION BY clause, each row translates to day. When the number of days (i.e., rows) existing prior to the current row’s day value is less than six, then the average is computed based on the current row’s quantity sold value and the available rows, if any. For example, the first date value in the daily report table is November 8, 2023. Each of the flavor’s 7-day moving average value is computed based on only the current row since none exist prior to it. Due to the nature of averages, the 7-day moving value and the quantity sold value will match. The solution described and the corresponding output can be found below. I have rounded the 7-day moving average values to two decimal places.
SELECT
daily_report.report_date,
daily_report.flavor,
daily_report.quantity_sold,
ROUND(
AVG(daily_report.quantity_sold) OVER (
PARTITION BY daily_report.flavor
ORDER BY daily_report.report_date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
),
2
) AS seven_day_moving_average
FROM
daily_report
ORDER BY
daily_report.report_date;
| report_date | flavor | quantity_sold | seven_day_moving_average |
|---|---|---|---|
| 08-NOV-23 | Chocolate | 10 | 10 |
| 08-NOV-23 | Vanilla | 55 | 55 |
| 08-NOV-23 | Red Velvet | 49 | 49 |
| 08-NOV-23 | Lemon | 69 | 69 |
| 09-NOV-23 | Red Velvet | 68 | 58.5 |
| 09-NOV-23 | Vanilla | 83 | 69 |
| 09-NOV-23 | Lemon | 45 | 57 |
| 09-NOV-23 | Chocolate | 18 | 14 |
| 10-NOV-23 | Chocolate | 95 | 41 |
| 10-NOV-23 | Vanilla | 97 | 78.33 |
| 10-NOV-23 | Red Velvet | 34 | 50.33 |
| 10-NOV-23 | Lemon | 52 | 55.33 |
| 11-NOV-23 | Red Velvet | 39 | 47.5 |
| 11-NOV-23 | Vanilla | 61 | 74 |
| 11-NOV-23 | Lemon | 14 | 45 |
| 11-NOV-23 | Chocolate | 7 | 32.5 |
| 12-NOV-23 | Vanilla | 12 | 61.6 |
| 12-NOV-23 | Lemon | 90 | 54 |
| 12-NOV-23 | Chocolate | 58 | 37.6 |
| 12-NOV-23 | Red Velvet | 92 | 56.4 |
| 13-NOV-23 | Chocolate | 52 | 40 |
| 13-NOV-23 | Lemon | 84 | 59 |
| 13-NOV-23 | Vanilla | 50 | 59.67 |
| 13-NOV-23 | Red Velvet | 62 | 57.33 |
| 14-NOV-23 | Chocolate | 85 | 46.43 |
| 14-NOV-23 | Red Velvet | 87 | 61.57 |
| 14-NOV-23 | Vanilla | 52 | 58.57 |
| 14-NOV-23 | Lemon | 67 | 60.14 |
| 15-NOV-23 | Chocolate | 52 | 52.43 |
| 15-NOV-23 | Red Velvet | 86 | 66.86 |
| 15-NOV-23 | Vanilla | 80 | 62.14 |
| 15-NOV-23 | Lemon | 28 | 54.29 |
| 16-NOV-23 | Chocolate | 1 | 50 |
| 16-NOV-23 | Red Velvet | 9 | 58.43 |
| 16-NOV-23 | Vanilla | 44 | 56.57 |
| 16-NOV-23 | Lemon | 78 | 59 |
| 17-NOV-23 | Chocolate | 94 | 49.86 |
| 17-NOV-23 | Red Velvet | 4 | 54.14 |
| 17-NOV-23 | Vanilla | 63 | 51.71 |
| 17-NOV-23 | Lemon | 97 | 65.43 |
| 18-NOV-23 | Chocolate | 74 | 59.43 |
| 18-NOV-23 | Red Velvet | 44 | 54.86 |
| 18-NOV-23 | Lemon | 21 | 66.43 |
| 18-NOV-23 | Vanilla | 14 | 45 |
| 19-NOV-23 | Chocolate | 52 | 58.57 |
| 19-NOV-23 | Red Velvet | 8 | 42.86 |
| 19-NOV-23 | Lemon | 7 | 54.57 |
| 19-NOV-23 | Vanilla | 78 | 54.43 |
| 20-NOV-23 | Chocolate | 53 | 58.71 |
| 20-NOV-23 | Red Velvet | 35 | 39 |
| 20-NOV-23 | Lemon | 90 | 55.43 |
| 20-NOV-23 | Vanilla | 69 | 57.14 |
| 21-NOV-23 | Chocolate | 17 | 49 |
| 21-NOV-23 | Red Velvet | 14 | 28.57 |
| 21-NOV-23 | Lemon | 77 | 56.86 |
| 21-NOV-23 | Vanilla | 47 | 56.43 |
| 22-NOV-23 | Chocolate | 44 | 47.86 |
| 22-NOV-23 | Red Velvet | 45 | 22.71 |
| 22-NOV-23 | Lemon | 71 | 63 |
| 22-NOV-23 | Vanilla | 67 | 54.57 |
| 23-NOV-23 | Chocolate | 58 | 56 |
| 23-NOV-23 | Red Velvet | 78 | 32.57 |
| 23-NOV-23 | Lemon | 71 | 62 |
| 23-NOV-23 | Vanilla | 55 | 56.14 |
| 24-NOV-23 | Chocolate | 41 | 48.43 |
| 24-NOV-23 | Red Velvet | 53 | 39.57 |
| 24-NOV-23 | Lemon | 12 | 49.86 |
| 24-NOV-23 | Vanilla | 81 | 58.71 |
| 25-NOV-23 | Chocolate | 38 | 43.29 |
| 25-NOV-23 | Red Velvet | 53 | 40.86 |
| 25-NOV-23 | Lemon | 32 | 51.43 |
| 25-NOV-23 | Vanilla | 30 | 61 |
| 26-NOV-23 | Chocolate | 30 | 40.14 |
| 26-NOV-23 | Red Velvet | 77 | 50.71 |
| 26-NOV-23 | Lemon | 1 | 50.57 |
| 26-NOV-23 | Vanilla | 89 | 62.57 |
| 27-NOV-23 | Chocolate | 50 | 39.71 |
| 27-NOV-23 | Red Velvet | 35 | 50.71 |
| 27-NOV-23 | Lemon | 86 | 50 |
| 27-NOV-23 | Vanilla | 5 | 53.43 |
| 28-NOV-23 | Chocolate | 85 | 49.43 |
| 28-NOV-23 | Lemon | 16 | 41.29 |
| 28-NOV-23 | Vanilla | 17 | 49.14 |
| 28-NOV-23 | Red Velvet | 6 | 49.57 |
| 29-NOV-23 | Chocolate | 20 | 46 |
| 29-NOV-23 | Lemon | 14 | 33.14 |
| 29-NOV-23 | Vanilla | 97 | 53.43 |
| 29-NOV-23 | Red Velvet | 2 | 43.43 |
| 30-NOV-23 | Chocolate | 55 | 45.57 |
| 30-NOV-23 | Lemon | 97 | 36.86 |
| 30-NOV-23 | Vanilla | 20 | 48.43 |
| 30-NOV-23 | Red Velvet | 92 | 45.43 |
| 01-DEC-23 | Chocolate | 84 | 51.71 |
| 01-DEC-23 | Lemon | 73 | 45.57 |
| 01-DEC-23 | Red Velvet | 10 | 39.29 |
| 01-DEC-23 | Vanilla | 64 | 46 |
| 02-DEC-23 | Vanilla | 85 | 53.86 |
| 02-DEC-23 | Chocolate | 77 | 57.29 |
| 02-DEC-23 | Lemon | 43 | 47.14 |
| 02-DEC-23 | Red Velvet | 38 | 37.14 |
| 03-DEC-23 | Red Velvet | 42 | 32.14 |
| 03-DEC-23 | Chocolate | 39 | 58.57 |
| 03-DEC-23 | Vanilla | 46 | 47.71 |
| 03-DEC-23 | Lemon | 23 | 50.29 |
| 04-DEC-23 | Chocolate | 92 | 64.57 |
| 04-DEC-23 | Red Velvet | 63 | 36.14 |
| 04-DEC-23 | Lemon | 19 | 40.71 |
| 04-DEC-23 | Vanilla | 35 | 52 |
| 05-DEC-23 | Chocolate | 51 | 59.71 |
| 05-DEC-23 | Red Velvet | 45 | 41.71 |
| 05-DEC-23 | Lemon | 0 | 38.43 |
| 05-DEC-23 | Vanilla | 20 | 52.43 |
| 06-DEC-23 | Lemon | 48 | 43.29 |
| 06-DEC-23 | Vanilla | 23 | 41.86 |
| 06-DEC-23 | Red Velvet | 76 | 52.29 |
| 06-DEC-23 | Chocolate | 16 | 59.14 |
| 07-DEC-23 | Vanilla | 95 | 52.57 |
| 07-DEC-23 | Red Velvet | 45 | 45.57 |
| 07-DEC-23 | Chocolate | 29 | 55.43 |
| 07-DEC-23 | Lemon | 5 | 30.14 |
| 08-DEC-23 | Vanilla | 57 | 51.57 |
| 08-DEC-23 | Red Velvet | 43 | 50.29 |
| 08-DEC-23 | Lemon | 10 | 21.14 |
| 08-DEC-23 | Chocolate | 55 | 51.29 |
| 09-DEC-23 | Vanilla | 92 | 52.57 |
| 09-DEC-23 | Chocolate | 63 | 49.29 |
| 09-DEC-23 | Lemon | 29 | 19.14 |
| 09-DEC-23 | Red Velvet | 88 | 57.43 |
| 10-DEC-23 | Vanilla | 96 | 59.71 |
| 10-DEC-23 | Chocolate | 94 | 57.14 |
| 10-DEC-23 | Lemon | 57 | 24 |
| 10-DEC-23 | Red Velvet | 26 | 55.14 |
| 11-DEC-23 | Vanilla | 29 | 58.86 |
| 11-DEC-23 | Chocolate | 65 | 53.29 |
| 11-DEC-23 | Lemon | 35 | 26.29 |
| 11-DEC-23 | Red Velvet | 61 | 54.86 |
| 12-DEC-23 | Vanilla | 62 | 64.86 |
| 12-DEC-23 | Chocolate | 99 | 60.14 |
| 12-DEC-23 | Lemon | 58 | 34.57 |
| 12-DEC-23 | Red Velvet | 42 | 54.43 |
| 13-DEC-23 | Vanilla | 25 | 65.14 |
| 13-DEC-23 | Chocolate | 68 | 67.57 |
| 13-DEC-23 | Lemon | 97 | 41.57 |
| 13-DEC-23 | Red Velvet | 52 | 51 |
| 14-DEC-23 | Vanilla | 99 | 65.71 |
| 14-DEC-23 | Chocolate | 17 | 65.86 |
| 14-DEC-23 | Lemon | 81 | 52.43 |
| 14-DEC-23 | Red Velvet | 78 | 55.71 |
| 15-DEC-23 | Vanilla | 92 | 70.71 |
| 15-DEC-23 | Chocolate | 80 | 69.43 |
| 15-DEC-23 | Lemon | 81 | 62.57 |
| 15-DEC-23 | Red Velvet | 76 | 60.43 |
| 16-DEC-23 | Vanilla | 82 | 69.29 |
| 16-DEC-23 | Chocolate | 29 | 64.57 |
| 16-DEC-23 | Lemon | 82 | 70.14 |
| 16-DEC-23 | Red Velvet | 59 | 56.29 |
| 17-DEC-23 | Vanilla | 10 | 57 |
| 17-DEC-23 | Chocolate | 55 | 59 |
| 17-DEC-23 | Lemon | 7 | 63 |
| 17-DEC-23 | Red Velvet | 86 | 64.86 |
| 18-DEC-23 | Vanilla | 30 | 57.14 |
| 18-DEC-23 | Chocolate | 2 | 50 |
| 18-DEC-23 | Lemon | 4 | 58.57 |
| 18-DEC-23 | Red Velvet | 93 | 69.43 |
| 19-DEC-23 | Vanilla | 25 | 51.86 |
| 19-DEC-23 | Chocolate | 81 | 47.43 |
| 19-DEC-23 | Lemon | 48 | 57.14 |
| 19-DEC-23 | Red Velvet | 69 | 73.29 |
| 20-DEC-23 | Vanilla | 17 | 50.71 |
| 20-DEC-23 | Chocolate | 88 | 50.29 |
| 20-DEC-23 | Lemon | 95 | 56.86 |
| 20-DEC-23 | Red Velvet | 45 | 72.29 |
| 21-DEC-23 | Vanilla | 37 | 41.86 |
| 21-DEC-23 | Chocolate | 30 | 52.14 |
| 21-DEC-23 | Lemon | 64 | 54.43 |
| 21-DEC-23 | Red Velvet | 18 | 63.71 |
| 22-DEC-23 | Vanilla | 73 | 39.14 |
| 22-DEC-23 | Chocolate | 100 | 55 |
| 22-DEC-23 | Lemon | 61 | 51.57 |
| 22-DEC-23 | Red Velvet | 98 | 66.86 |
| 23-DEC-23 | Vanilla | 52 | 34.86 |
| 23-DEC-23 | Chocolate | 1 | 51 |
| 23-DEC-23 | Lemon | 81 | 51.43 |
| 23-DEC-23 | Red Velvet | 5 | 59.14 |
| 24-DEC-23 | Vanilla | 63 | 42.43 |
| 24-DEC-23 | Chocolate | 33 | 47.86 |
| 24-DEC-23 | Lemon | 21 | 53.43 |
| 24-DEC-23 | Red Velvet | 2 | 47.14 |
| 25-DEC-23 | Vanilla | 40 | 43.86 |
| 25-DEC-23 | Chocolate | 78 | 58.71 |
| 25-DEC-23 | Lemon | 12 | 54.57 |
| 25-DEC-23 | Red Velvet | 61 | 42.57 |
| 26-DEC-23 | Vanilla | 81 | 51.86 |
| 26-DEC-23 | Chocolate | 9 | 48.43 |
| 26-DEC-23 | Lemon | 48 | 54.57 |
| 26-DEC-23 | Red Velvet | 16 | 35 |
| 27-DEC-23 | Vanilla | 30 | 53.71 |
| 27-DEC-23 | Chocolate | 51 | 43.14 |
| 27-DEC-23 | Lemon | 89 | 53.71 |
| 27-DEC-23 | Red Velvet | 7 | 29.57 |
| 28-DEC-23 | Vanilla | 44 | 54.71 |
| 28-DEC-23 | Chocolate | 81 | 50.43 |
| 28-DEC-23 | Lemon | 16 | 46.86 |
| 28-DEC-23 | Red Velvet | 0 | 27 |
| 29-DEC-23 | Vanilla | 28 | 48.29 |
| 29-DEC-23 | Chocolate | 80 | 47.57 |
| 29-DEC-23 | Lemon | 95 | 51.71 |
| 29-DEC-23 | Red Velvet | 87 | 25.43 |
| 30-DEC-23 | Vanilla | 67 | 50.43 |
| 30-DEC-23 | Chocolate | 74 | 58 |
| 30-DEC-23 | Lemon | 37 | 45.43 |
| 30-DEC-23 | Red Velvet | 80 | 36.14 |
| 31-DEC-23 | Vanilla | 14 | 43.43 |
| 31-DEC-23 | Chocolate | 27 | 57.14 |
| 31-DEC-23 | Lemon | 74 | 53 |
| 31-DEC-23 | Red Velvet | 49 | 42.86 |
| 01-JAN-24 | Chocolate | 38 | 51.43 |
| 01-JAN-24 | Red Velvet | 13 | 36 |
| 01-JAN-24 | Lemon | 45 | 57.71 |
| 01-JAN-24 | Vanilla | 21 | 40.71 |
| 02-JAN-24 | Red Velvet | 18 | 36.29 |
| 02-JAN-24 | Vanilla | 50 | 36.29 |
| 02-JAN-24 | Lemon | 81 | 62.43 |
| 02-JAN-24 | Chocolate | 43 | 56.29 |
| 03-JAN-24 | Red Velvet | 16 | 37.57 |
| 03-JAN-24 | Lemon | 28 | 53.71 |
| 03-JAN-24 | Chocolate | 83 | 60.86 |
| 03-JAN-24 | Vanilla | 43 | 38.14 |
| 04-JAN-24 | Lemon | 23 | 54.71 |
| 04-JAN-24 | Chocolate | 82 | 61 |
| 04-JAN-24 | Vanilla | 1 | 32 |
| 04-JAN-24 | Red Velvet | 51 | 44.86 |
| 05-JAN-24 | Chocolate | 6 | 50.43 |
| 05-JAN-24 | Lemon | 61 | 49.86 |
| 05-JAN-24 | Red Velvet | 94 | 45.86 |
| 05-JAN-24 | Vanilla | 33 | 32.71 |
| 06-JAN-24 | Vanilla | 88 | 35.71 |
| 06-JAN-24 | Lemon | 32 | 49.14 |
| 06-JAN-24 | Chocolate | 95 | 53.43 |
| 06-JAN-24 | Red Velvet | 3 | 34.86 |
| 07-JAN-24 | Lemon | 57 | 46.71 |
| 07-JAN-24 | Chocolate | 74 | 60.14 |
| 07-JAN-24 | Vanilla | 11 | 35.29 |
| 07-JAN-24 | Red Velvet | 50 | 35 |
| 08-JAN-24 | Vanilla | 27 | 36.14 |
| 08-JAN-24 | Red Velvet | 22 | 36.29 |
| 08-JAN-24 | Lemon | 81 | 51.86 |
| 08-JAN-24 | Chocolate | 5 | 55.43 |
| 09-JAN-24 | Vanilla | 66 | 38.43 |
| 09-JAN-24 | Chocolate | 5 | 50 |
| 09-JAN-24 | Red Velvet | 64 | 42.86 |
| 09-JAN-24 | Lemon | 89 | 53 |
| 10-JAN-24 | Vanilla | 50 | 39.43 |
| 10-JAN-24 | Red Velvet | 80 | 52 |
| 10-JAN-24 | Chocolate | 35 | 43.14 |
| 10-JAN-24 | Lemon | 84 | 61 |
| 11-JAN-24 | Chocolate | 89 | 44.14 |
| 11-JAN-24 | Vanilla | 47 | 46 |
| 11-JAN-24 | Red Velvet | 51 | 52 |
| 11-JAN-24 | Lemon | 40 | 63.43 |
| 12-JAN-24 | Vanilla | 93 | 54.57 |
| 12-JAN-24 | Lemon | 54 | 62.43 |
| 12-JAN-24 | Chocolate | 43 | 49.43 |
| 12-JAN-24 | Red Velvet | 24 | 42 |
| 13-JAN-24 | Chocolate | 100 | 50.14 |
| 13-JAN-24 | Vanilla | 62 | 50.86 |
| 13-JAN-24 | Red Velvet | 17 | 44 |
| 13-JAN-24 | Lemon | 22 | 61 |
| 14-JAN-24 | Lemon | 69 | 62.71 |
| 14-JAN-24 | Vanilla | 100 | 63.57 |
| 14-JAN-24 | Chocolate | 40 | 45.29 |
| 14-JAN-24 | Red Velvet | 93 | 50.14 |
| 15-JAN-24 | Lemon | 25 | 54.71 |
| 15-JAN-24 | Chocolate | 75 | 55.29 |
| 15-JAN-24 | Red Velvet | 57 | 55.14 |
| 15-JAN-24 | Vanilla | 72 | 70 |
| 16-JAN-24 | Lemon | 34 | 46.86 |
| 16-JAN-24 | Chocolate | 94 | 68 |
| 16-JAN-24 | Vanilla | 94 | 74 |
| 16-JAN-24 | Red Velvet | 70 | 56 |
| 17-JAN-24 | Chocolate | 35 | 68 |
| 17-JAN-24 | Vanilla | 35 | 71.86 |
| 17-JAN-24 | Red Velvet | 93 | 57.86 |
| 17-JAN-24 | Lemon | 77 | 45.86 |
| 18-JAN-24 | Red Velvet | 78 | 61.71 |
| 18-JAN-24 | Vanilla | 90 | 78 |
| 18-JAN-24 | Chocolate | 17 | 57.71 |
| 18-JAN-24 | Lemon | 97 | 54 |
| 19-JAN-24 | Lemon | 71 | 56.43 |
| 19-JAN-24 | Chocolate | 33 | 56.29 |
| 19-JAN-24 | Vanilla | 44 | 71 |
| 19-JAN-24 | Red Velvet | 16 | 60.57 |
| 20-JAN-24 | Chocolate | 17 | 44.43 |
| 20-JAN-24 | Red Velvet | 96 | 71.86 |
| 20-JAN-24 | Vanilla | 95 | 75.71 |
| 20-JAN-24 | Lemon | 35 | 58.29 |
| 21-JAN-24 | Chocolate | 5 | 39.43 |
| 21-JAN-24 | Vanilla | 2 | 61.71 |
| 21-JAN-24 | Red Velvet | 55 | 66.43 |
| 21-JAN-24 | Lemon | 24 | 51.86 |
| 22-JAN-24 | Red Velvet | 57 | 66.43 |
| 22-JAN-24 | Chocolate | 96 | 42.43 |
| 22-JAN-24 | Lemon | 88 | 60.86 |
| 22-JAN-24 | Vanilla | 11 | 53 |
| 23-JAN-24 | Vanilla | 70 | 49.57 |
| 23-JAN-24 | Lemon | 88 | 68.57 |
| 23-JAN-24 | Chocolate | 48 | 35.86 |
| 23-JAN-24 | Red Velvet | 74 | 67 |
| 24-JAN-24 | Red Velvet | 72 | 64 |
| 24-JAN-24 | Vanilla | 45 | 51 |
| 24-JAN-24 | Chocolate | 23 | 34.14 |
| 24-JAN-24 | Lemon | 84 | 69.57 |
| 25-JAN-24 | Vanilla | 44 | 44.43 |
| 25-JAN-24 | Red Velvet | 31 | 57.29 |
| 25-JAN-24 | Lemon | 81 | 67.29 |
| 25-JAN-24 | Chocolate | 21 | 34.71 |
| 26-JAN-24 | Vanilla | 49 | 45.14 |
| 26-JAN-24 | Red Velvet | 97 | 68.86 |
| 26-JAN-24 | Lemon | 90 | 70 |
| 26-JAN-24 | Chocolate | 5 | 30.71 |
| 27-JAN-24 | Lemon | 93 | 78.29 |
| 27-JAN-24 | Red Velvet | 7 | 56.14 |
| 27-JAN-24 | Chocolate | 63 | 37.29 |
| 27-JAN-24 | Vanilla | 97 | 45.43 |
| 28-JAN-24 | Lemon | 4 | 75.43 |
| 28-JAN-24 | Vanilla | 28 | 49.14 |
| 28-JAN-24 | Chocolate | 29 | 40.71 |
| 28-JAN-24 | Red Velvet | 42 | 54.29 |
| 29-JAN-24 | Chocolate | 87 | 39.43 |
| 29-JAN-24 | Lemon | 70 | 72.86 |
| 29-JAN-24 | Vanilla | 5 | 48.29 |
| 29-JAN-24 | Red Velvet | 98 | 60.14 |
| 30-JAN-24 | Chocolate | 54 | 40.29 |
| 30-JAN-24 | Vanilla | 48 | 45.14 |
| 30-JAN-24 | Red Velvet | 21 | 52.57 |
| 30-JAN-24 | Lemon | 87 | 72.71 |
| 31-JAN-24 | Vanilla | 92 | 51.86 |
| 31-JAN-24 | Red Velvet | 4 | 42.86 |
| 31-JAN-24 | Lemon | 11 | 62.29 |
| 31-JAN-24 | Chocolate | 76 | 47.86 |
| 01-FEB-24 | Vanilla | 68 | 55.29 |
| 01-FEB-24 | Red Velvet | 93 | 51.71 |
| 01-FEB-24 | Lemon | 88 | 63.29 |
| 01-FEB-24 | Chocolate | 65 | 54.14 |
| 02-FEB-24 | Vanilla | 36 | 53.43 |
| 02-FEB-24 | Red Velvet | 37 | 43.14 |
| 02-FEB-24 | Chocolate | 72 | 63.71 |
| 02-FEB-24 | Lemon | 24 | 53.86 |
| 03-FEB-24 | Lemon | 91 | 53.57 |
| 03-FEB-24 | Red Velvet | 52 | 49.57 |
| 03-FEB-24 | Vanilla | 89 | 52.29 |
| 03-FEB-24 | Chocolate | 96 | 68.43 |
| 04-FEB-24 | Lemon | 86 | 65.29 |
| 04-FEB-24 | Red Velvet | 4 | 44.14 |
| 04-FEB-24 | Vanilla | 100 | 62.57 |
| 04-FEB-24 | Chocolate | 1 | 64.43 |
| 05-FEB-24 | Red Velvet | 91 | 43.14 |
| 05-FEB-24 | Lemon | 71 | 65.43 |
| 05-FEB-24 | Chocolate | 34 | 56.86 |
| 05-FEB-24 | Vanilla | 48 | 68.71 |
| 06-FEB-24 | Lemon | 63 | 62 |
| 06-FEB-24 | Chocolate | 7 | 50.14 |
| 06-FEB-24 | Vanilla | 57 | 70 |
| 06-FEB-24 | Red Velvet | 65 | 49.43 |
Daily Cupcake Flavor Performance
There are several possible ways to generate the requested report. The methods for doing so have in common that each allows a within-row comparison to be made between the row’s quantity sold value and the value associated with the largest number of cupcakes ever sold for the row’s flavor value. Using the MAX function as a window function, the latter of the two values can be computed by simply partitioning the data by flavor. This ensures the maximum value computed is based on the quantity sold values in the data matching the current row’s flavor value. For each row, the difference can be computed by subtracting the result of the window function from the row’s quantity sold value. For clarity, see the code and corresponding output below.
SELECT
daily_report.report_date,
daily_report.flavor,
daily_report.quantity_sold,
MAX(daily_report.quantity_sold) OVER (
PARTITION BY daily_report.flavor
) AS all_time_high,
(
daily_report.quantity_sold
- MAX(daily_report.quantity_sold) OVER (
PARTITION BY daily_report.flavor
)
) AS difference
FROM
daily_report
ORDER BY
daily_report.report_date;
| report_date | flavor | quantity_sold | month_flavor_max | difference |
|---|---|---|---|---|
| 08-NOV-23 | Red Velvet | 49 | 92 | -43 |
| 08-NOV-23 | Lemon | 69 | 97 | -28 |
| 08-NOV-23 | Chocolate | 10 | 95 | -85 |
| 08-NOV-23 | Vanilla | 55 | 97 | -42 |
| 09-NOV-23 | Red Velvet | 68 | 92 | -24 |
| 09-NOV-23 | Vanilla | 83 | 97 | -14 |
| 09-NOV-23 | Lemon | 45 | 97 | -52 |
| 09-NOV-23 | Chocolate | 18 | 95 | -77 |
| 10-NOV-23 | Vanilla | 97 | 97 | 0 |
| 10-NOV-23 | Red Velvet | 34 | 92 | -58 |
| 10-NOV-23 | Chocolate | 95 | 95 | 0 |
| 10-NOV-23 | Lemon | 52 | 97 | -45 |
| 11-NOV-23 | Vanilla | 61 | 97 | -36 |
| 11-NOV-23 | Red Velvet | 39 | 92 | -53 |
| 11-NOV-23 | Lemon | 14 | 97 | -83 |
| 11-NOV-23 | Chocolate | 7 | 95 | -88 |
| 12-NOV-23 | Chocolate | 58 | 95 | -37 |
| 12-NOV-23 | Vanilla | 12 | 97 | -85 |
| 12-NOV-23 | Red Velvet | 92 | 92 | 0 |
| 12-NOV-23 | Lemon | 90 | 97 | -7 |
| 13-NOV-23 | Chocolate | 52 | 95 | -43 |
| 13-NOV-23 | Vanilla | 50 | 97 | -47 |
| 13-NOV-23 | Red Velvet | 62 | 92 | -30 |
| 13-NOV-23 | Lemon | 84 | 97 | -13 |
| 14-NOV-23 | Lemon | 67 | 97 | -30 |
| 14-NOV-23 | Vanilla | 52 | 97 | -45 |
| 14-NOV-23 | Red Velvet | 87 | 92 | -5 |
| 14-NOV-23 | Chocolate | 85 | 95 | -10 |
| 15-NOV-23 | Red Velvet | 86 | 92 | -6 |
| 15-NOV-23 | Vanilla | 80 | 97 | -17 |
| 15-NOV-23 | Chocolate | 52 | 95 | -43 |
| 15-NOV-23 | Lemon | 28 | 97 | -69 |
| 16-NOV-23 | Chocolate | 1 | 95 | -94 |
| 16-NOV-23 | Vanilla | 44 | 97 | -53 |
| 16-NOV-23 | Red Velvet | 9 | 92 | -83 |
| 16-NOV-23 | Lemon | 78 | 97 | -19 |
| 17-NOV-23 | Lemon | 97 | 97 | 0 |
| 17-NOV-23 | Vanilla | 63 | 97 | -34 |
| 17-NOV-23 | Chocolate | 94 | 95 | -1 |
| 17-NOV-23 | Red Velvet | 4 | 92 | -88 |
| 18-NOV-23 | Lemon | 21 | 97 | -76 |
| 18-NOV-23 | Red Velvet | 44 | 92 | -48 |
| 18-NOV-23 | Chocolate | 74 | 95 | -21 |
| 18-NOV-23 | Vanilla | 14 | 97 | -83 |
| 19-NOV-23 | Vanilla | 78 | 97 | -19 |
| 19-NOV-23 | Chocolate | 52 | 95 | -43 |
| 19-NOV-23 | Lemon | 7 | 97 | -90 |
| 19-NOV-23 | Red Velvet | 8 | 92 | -84 |
| 20-NOV-23 | Chocolate | 53 | 95 | -42 |
| 20-NOV-23 | Vanilla | 69 | 97 | -28 |
| 20-NOV-23 | Red Velvet | 35 | 92 | -57 |
| 20-NOV-23 | Lemon | 90 | 97 | -7 |
| 21-NOV-23 | Lemon | 77 | 97 | -20 |
| 21-NOV-23 | Vanilla | 47 | 97 | -50 |
| 21-NOV-23 | Red Velvet | 14 | 92 | -78 |
| 21-NOV-23 | Chocolate | 17 | 95 | -78 |
| 22-NOV-23 | Lemon | 71 | 97 | -26 |
| 22-NOV-23 | Vanilla | 67 | 97 | -30 |
| 22-NOV-23 | Chocolate | 44 | 95 | -51 |
| 22-NOV-23 | Red Velvet | 45 | 92 | -47 |
| 23-NOV-23 | Vanilla | 55 | 97 | -42 |
| 23-NOV-23 | Red Velvet | 78 | 92 | -14 |
| 23-NOV-23 | Lemon | 71 | 97 | -26 |
| 23-NOV-23 | Chocolate | 58 | 95 | -37 |
| 24-NOV-23 | Chocolate | 41 | 95 | -54 |
| 24-NOV-23 | Vanilla | 81 | 97 | -16 |
| 24-NOV-23 | Red Velvet | 53 | 92 | -39 |
| 24-NOV-23 | Lemon | 12 | 97 | -85 |
| 25-NOV-23 | Lemon | 32 | 97 | -65 |
| 25-NOV-23 | Vanilla | 30 | 97 | -67 |
| 25-NOV-23 | Chocolate | 38 | 95 | -57 |
| 25-NOV-23 | Red Velvet | 53 | 92 | -39 |
| 26-NOV-23 | Vanilla | 89 | 97 | -8 |
| 26-NOV-23 | Chocolate | 30 | 95 | -65 |
| 26-NOV-23 | Red Velvet | 77 | 92 | -15 |
| 26-NOV-23 | Lemon | 1 | 97 | -96 |
| 27-NOV-23 | Vanilla | 5 | 97 | -92 |
| 27-NOV-23 | Lemon | 86 | 97 | -11 |
| 27-NOV-23 | Chocolate | 50 | 95 | -45 |
| 27-NOV-23 | Red Velvet | 35 | 92 | -57 |
| 28-NOV-23 | Vanilla | 17 | 97 | -80 |
| 28-NOV-23 | Chocolate | 85 | 95 | -10 |
| 28-NOV-23 | Lemon | 16 | 97 | -81 |
| 28-NOV-23 | Red Velvet | 6 | 92 | -86 |
| 29-NOV-23 | Lemon | 14 | 97 | -83 |
| 29-NOV-23 | Red Velvet | 2 | 92 | -90 |
| 29-NOV-23 | Vanilla | 97 | 97 | 0 |
| 29-NOV-23 | Chocolate | 20 | 95 | -75 |
| 30-NOV-23 | Red Velvet | 92 | 92 | 0 |
| 30-NOV-23 | Lemon | 97 | 97 | 0 |
| 30-NOV-23 | Vanilla | 20 | 97 | -77 |
| 30-NOV-23 | Chocolate | 55 | 95 | -40 |
| 01-DEC-23 | Lemon | 73 | 97 | -24 |
| 01-DEC-23 | Vanilla | 64 | 99 | -35 |
| 01-DEC-23 | Chocolate | 84 | 100 | -16 |
| 01-DEC-23 | Red Velvet | 10 | 98 | -88 |
| 02-DEC-23 | Red Velvet | 38 | 98 | -60 |
| 02-DEC-23 | Vanilla | 85 | 99 | -14 |
| 02-DEC-23 | Chocolate | 77 | 100 | -23 |
| 02-DEC-23 | Lemon | 43 | 97 | -54 |
| 03-DEC-23 | Red Velvet | 42 | 98 | -56 |
| 03-DEC-23 | Chocolate | 39 | 100 | -61 |
| 03-DEC-23 | Lemon | 23 | 97 | -74 |
| 03-DEC-23 | Vanilla | 46 | 99 | -53 |
| 04-DEC-23 | Lemon | 19 | 97 | -78 |
| 04-DEC-23 | Chocolate | 92 | 100 | -8 |
| 04-DEC-23 | Red Velvet | 63 | 98 | -35 |
| 04-DEC-23 | Vanilla | 35 | 99 | -64 |
| 05-DEC-23 | Chocolate | 51 | 100 | -49 |
| 05-DEC-23 | Lemon | 0 | 97 | -97 |
| 05-DEC-23 | Red Velvet | 45 | 98 | -53 |
| 05-DEC-23 | Vanilla | 20 | 99 | -79 |
| 06-DEC-23 | Red Velvet | 76 | 98 | -22 |
| 06-DEC-23 | Vanilla | 23 | 99 | -76 |
| 06-DEC-23 | Lemon | 48 | 97 | -49 |
| 06-DEC-23 | Chocolate | 16 | 100 | -84 |
| 07-DEC-23 | Lemon | 5 | 97 | -92 |
| 07-DEC-23 | Vanilla | 95 | 99 | -4 |
| 07-DEC-23 | Chocolate | 29 | 100 | -71 |
| 07-DEC-23 | Red Velvet | 45 | 98 | -53 |
| 08-DEC-23 | Red Velvet | 43 | 98 | -55 |
| 08-DEC-23 | Chocolate | 55 | 100 | -45 |
| 08-DEC-23 | Vanilla | 57 | 99 | -42 |
| 08-DEC-23 | Lemon | 10 | 97 | -87 |
| 09-DEC-23 | Lemon | 29 | 97 | -68 |
| 09-DEC-23 | Vanilla | 92 | 99 | -7 |
| 09-DEC-23 | Chocolate | 63 | 100 | -37 |
| 09-DEC-23 | Red Velvet | 88 | 98 | -10 |
| 10-DEC-23 | Vanilla | 96 | 99 | -3 |
| 10-DEC-23 | Red Velvet | 26 | 98 | -72 |
| 10-DEC-23 | Lemon | 57 | 97 | -40 |
| 10-DEC-23 | Chocolate | 94 | 100 | -6 |
| 11-DEC-23 | Red Velvet | 61 | 98 | -37 |
| 11-DEC-23 | Lemon | 35 | 97 | -62 |
| 11-DEC-23 | Chocolate | 65 | 100 | -35 |
| 11-DEC-23 | Vanilla | 29 | 99 | -70 |
| 12-DEC-23 | Chocolate | 99 | 100 | -1 |
| 12-DEC-23 | Vanilla | 62 | 99 | -37 |
| 12-DEC-23 | Red Velvet | 42 | 98 | -56 |
| 12-DEC-23 | Lemon | 58 | 97 | -39 |
| 13-DEC-23 | Chocolate | 68 | 100 | -32 |
| 13-DEC-23 | Lemon | 97 | 97 | 0 |
| 13-DEC-23 | Vanilla | 25 | 99 | -74 |
| 13-DEC-23 | Red Velvet | 52 | 98 | -46 |
| 14-DEC-23 | Lemon | 81 | 97 | -16 |
| 14-DEC-23 | Chocolate | 17 | 100 | -83 |
| 14-DEC-23 | Vanilla | 99 | 99 | 0 |
| 14-DEC-23 | Red Velvet | 78 | 98 | -20 |
| 15-DEC-23 | Chocolate | 80 | 100 | -20 |
| 15-DEC-23 | Lemon | 81 | 97 | -16 |
| 15-DEC-23 | Red Velvet | 76 | 98 | -22 |
| 15-DEC-23 | Vanilla | 92 | 99 | -7 |
| 16-DEC-23 | Vanilla | 82 | 99 | -17 |
| 16-DEC-23 | Red Velvet | 59 | 98 | -39 |
| 16-DEC-23 | Lemon | 82 | 97 | -15 |
| 16-DEC-23 | Chocolate | 29 | 100 | -71 |
| 17-DEC-23 | Vanilla | 10 | 99 | -89 |
| 17-DEC-23 | Red Velvet | 86 | 98 | -12 |
| 17-DEC-23 | Lemon | 7 | 97 | -90 |
| 17-DEC-23 | Chocolate | 55 | 100 | -45 |
| 18-DEC-23 | Red Velvet | 93 | 98 | -5 |
| 18-DEC-23 | Vanilla | 30 | 99 | -69 |
| 18-DEC-23 | Lemon | 4 | 97 | -93 |
| 18-DEC-23 | Chocolate | 2 | 100 | -98 |
| 19-DEC-23 | Lemon | 48 | 97 | -49 |
| 19-DEC-23 | Vanilla | 25 | 99 | -74 |
| 19-DEC-23 | Red Velvet | 69 | 98 | -29 |
| 19-DEC-23 | Chocolate | 81 | 100 | -19 |
| 20-DEC-23 | Lemon | 95 | 97 | -2 |
| 20-DEC-23 | Red Velvet | 45 | 98 | -53 |
| 20-DEC-23 | Vanilla | 17 | 99 | -82 |
| 20-DEC-23 | Chocolate | 88 | 100 | -12 |
| 21-DEC-23 | Vanilla | 37 | 99 | -62 |
| 21-DEC-23 | Chocolate | 30 | 100 | -70 |
| 21-DEC-23 | Lemon | 64 | 97 | -33 |
| 21-DEC-23 | Red Velvet | 18 | 98 | -80 |
| 22-DEC-23 | Lemon | 61 | 97 | -36 |
| 22-DEC-23 | Chocolate | 100 | 100 | 0 |
| 22-DEC-23 | Vanilla | 73 | 99 | -26 |
| 22-DEC-23 | Red Velvet | 98 | 98 | 0 |
| 23-DEC-23 | Lemon | 81 | 97 | -16 |
| 23-DEC-23 | Vanilla | 52 | 99 | -47 |
| 23-DEC-23 | Red Velvet | 5 | 98 | -93 |
| 23-DEC-23 | Chocolate | 1 | 100 | -99 |
| 24-DEC-23 | Vanilla | 63 | 99 | -36 |
| 24-DEC-23 | Red Velvet | 2 | 98 | -96 |
| 24-DEC-23 | Chocolate | 33 | 100 | -67 |
| 24-DEC-23 | Lemon | 21 | 97 | -76 |
| 25-DEC-23 | Lemon | 12 | 97 | -85 |
| 25-DEC-23 | Chocolate | 78 | 100 | -22 |
| 25-DEC-23 | Red Velvet | 61 | 98 | -37 |
| 25-DEC-23 | Vanilla | 40 | 99 | -59 |
| 26-DEC-23 | Red Velvet | 16 | 98 | -82 |
| 26-DEC-23 | Lemon | 48 | 97 | -49 |
| 26-DEC-23 | Chocolate | 9 | 100 | -91 |
| 26-DEC-23 | Vanilla | 81 | 99 | -18 |
| 27-DEC-23 | Red Velvet | 7 | 98 | -91 |
| 27-DEC-23 | Lemon | 89 | 97 | -8 |
| 27-DEC-23 | Chocolate | 51 | 100 | -49 |
| 27-DEC-23 | Vanilla | 30 | 99 | -69 |
| 28-DEC-23 | Red Velvet | 0 | 98 | -98 |
| 28-DEC-23 | Chocolate | 81 | 100 | -19 |
| 28-DEC-23 | Lemon | 16 | 97 | -81 |
| 28-DEC-23 | Vanilla | 44 | 99 | -55 |
| 29-DEC-23 | Red Velvet | 87 | 98 | -11 |
| 29-DEC-23 | Vanilla | 28 | 99 | -71 |
| 29-DEC-23 | Lemon | 95 | 97 | -2 |
| 29-DEC-23 | Chocolate | 80 | 100 | -20 |
| 30-DEC-23 | Red Velvet | 80 | 98 | -18 |
| 30-DEC-23 | Vanilla | 67 | 99 | -32 |
| 30-DEC-23 | Lemon | 37 | 97 | -60 |
| 30-DEC-23 | Chocolate | 74 | 100 | -26 |
| 31-DEC-23 | Vanilla | 14 | 99 | -85 |
| 31-DEC-23 | Lemon | 74 | 97 | -23 |
| 31-DEC-23 | Red Velvet | 49 | 98 | -49 |
| 31-DEC-23 | Chocolate | 27 | 100 | -73 |
| 01-JAN-24 | Red Velvet | 13 | 98 | -85 |
| 01-JAN-24 | Lemon | 45 | 97 | -52 |
| 01-JAN-24 | Chocolate | 38 | 100 | -62 |
| 01-JAN-24 | Vanilla | 21 | 100 | -79 |
| 02-JAN-24 | Red Velvet | 18 | 98 | -80 |
| 02-JAN-24 | Lemon | 81 | 97 | -16 |
| 02-JAN-24 | Chocolate | 43 | 100 | -57 |
| 02-JAN-24 | Vanilla | 50 | 100 | -50 |
| 03-JAN-24 | Red Velvet | 16 | 98 | -82 |
| 03-JAN-24 | Lemon | 28 | 97 | -69 |
| 03-JAN-24 | Chocolate | 83 | 100 | -17 |
| 03-JAN-24 | Vanilla | 43 | 100 | -57 |
| 04-JAN-24 | Red Velvet | 51 | 98 | -47 |
| 04-JAN-24 | Lemon | 23 | 97 | -74 |
| 04-JAN-24 | Chocolate | 82 | 100 | -18 |
| 04-JAN-24 | Vanilla | 1 | 100 | -99 |
| 05-JAN-24 | Red Velvet | 94 | 98 | -4 |
| 05-JAN-24 | Lemon | 61 | 97 | -36 |
| 05-JAN-24 | Chocolate | 6 | 100 | -94 |
| 05-JAN-24 | Vanilla | 33 | 100 | -67 |
| 06-JAN-24 | Red Velvet | 3 | 98 | -95 |
| 06-JAN-24 | Lemon | 32 | 97 | -65 |
| 06-JAN-24 | Chocolate | 95 | 100 | -5 |
| 06-JAN-24 | Vanilla | 88 | 100 | -12 |
| 07-JAN-24 | Red Velvet | 50 | 98 | -48 |
| 07-JAN-24 | Lemon | 57 | 97 | -40 |
| 07-JAN-24 | Chocolate | 74 | 100 | -26 |
| 07-JAN-24 | Vanilla | 11 | 100 | -89 |
| 08-JAN-24 | Red Velvet | 22 | 98 | -76 |
| 08-JAN-24 | Lemon | 81 | 97 | -16 |
| 08-JAN-24 | Chocolate | 5 | 100 | -95 |
| 08-JAN-24 | Vanilla | 27 | 100 | -73 |
| 09-JAN-24 | Red Velvet | 64 | 98 | -34 |
| 09-JAN-24 | Lemon | 89 | 97 | -8 |
| 09-JAN-24 | Chocolate | 5 | 100 | -95 |
| 09-JAN-24 | Vanilla | 66 | 100 | -34 |
| 10-JAN-24 | Red Velvet | 80 | 98 | -18 |
| 10-JAN-24 | Lemon | 84 | 97 | -13 |
| 10-JAN-24 | Chocolate | 35 | 100 | -65 |
| 10-JAN-24 | Vanilla | 50 | 100 | -50 |
| 11-JAN-24 | Red Velvet | 51 | 98 | -47 |
| 11-JAN-24 | Lemon | 40 | 97 | -57 |
| 11-JAN-24 | Chocolate | 89 | 100 | -11 |
| 11-JAN-24 | Vanilla | 47 | 100 | -53 |
| 12-JAN-24 | Vanilla | 93 | 100 | -7 |
| 12-JAN-24 | Red Velvet | 24 | 98 | -74 |
| 12-JAN-24 | Lemon | 54 | 97 | -43 |
| 12-JAN-24 | Chocolate | 43 | 100 | -57 |
| 13-JAN-24 | Red Velvet | 17 | 98 | -81 |
| 13-JAN-24 | Lemon | 22 | 97 | -75 |
| 13-JAN-24 | Chocolate | 100 | 100 | 0 |
| 13-JAN-24 | Vanilla | 62 | 100 | -38 |
| 14-JAN-24 | Red Velvet | 93 | 98 | -5 |
| 14-JAN-24 | Lemon | 69 | 97 | -28 |
| 14-JAN-24 | Chocolate | 40 | 100 | -60 |
| 14-JAN-24 | Vanilla | 100 | 100 | 0 |
| 15-JAN-24 | Red Velvet | 57 | 98 | -41 |
| 15-JAN-24 | Lemon | 25 | 97 | -72 |
| 15-JAN-24 | Chocolate | 75 | 100 | -25 |
| 15-JAN-24 | Vanilla | 72 | 100 | -28 |
| 16-JAN-24 | Red Velvet | 70 | 98 | -28 |
| 16-JAN-24 | Lemon | 34 | 97 | -63 |
| 16-JAN-24 | Chocolate | 94 | 100 | -6 |
| 16-JAN-24 | Vanilla | 94 | 100 | -6 |
| 17-JAN-24 | Red Velvet | 93 | 98 | -5 |
| 17-JAN-24 | Lemon | 77 | 97 | -20 |
| 17-JAN-24 | Chocolate | 35 | 100 | -65 |
| 17-JAN-24 | Vanilla | 35 | 100 | -65 |
| 18-JAN-24 | Red Velvet | 78 | 98 | -20 |
| 18-JAN-24 | Lemon | 97 | 97 | 0 |
| 18-JAN-24 | Chocolate | 17 | 100 | -83 |
| 18-JAN-24 | Vanilla | 90 | 100 | -10 |
| 19-JAN-24 | Red Velvet | 16 | 98 | -82 |
| 19-JAN-24 | Lemon | 71 | 97 | -26 |
| 19-JAN-24 | Chocolate | 33 | 100 | -67 |
| 19-JAN-24 | Vanilla | 44 | 100 | -56 |
| 20-JAN-24 | Red Velvet | 96 | 98 | -2 |
| 20-JAN-24 | Lemon | 35 | 97 | -62 |
| 20-JAN-24 | Chocolate | 17 | 100 | -83 |
| 20-JAN-24 | Vanilla | 95 | 100 | -5 |
| 21-JAN-24 | Red Velvet | 55 | 98 | -43 |
| 21-JAN-24 | Lemon | 24 | 97 | -73 |
| 21-JAN-24 | Chocolate | 5 | 100 | -95 |
| 21-JAN-24 | Vanilla | 2 | 100 | -98 |
| 22-JAN-24 | Vanilla | 11 | 100 | -89 |
| 22-JAN-24 | Chocolate | 96 | 100 | -4 |
| 22-JAN-24 | Lemon | 88 | 97 | -9 |
| 22-JAN-24 | Red Velvet | 57 | 98 | -41 |
| 23-JAN-24 | Lemon | 88 | 97 | -9 |
| 23-JAN-24 | Chocolate | 48 | 100 | -52 |
| 23-JAN-24 | Vanilla | 70 | 100 | -30 |
| 23-JAN-24 | Red Velvet | 74 | 98 | -24 |
| 24-JAN-24 | Lemon | 84 | 97 | -13 |
| 24-JAN-24 | Chocolate | 23 | 100 | -77 |
| 24-JAN-24 | Vanilla | 45 | 100 | -55 |
| 24-JAN-24 | Red Velvet | 72 | 98 | -26 |
| 25-JAN-24 | Vanilla | 44 | 100 | -56 |
| 25-JAN-24 | Lemon | 81 | 97 | -16 |
| 25-JAN-24 | Red Velvet | 31 | 98 | -67 |
| 25-JAN-24 | Chocolate | 21 | 100 | -79 |
| 26-JAN-24 | Vanilla | 49 | 100 | -51 |
| 26-JAN-24 | Lemon | 90 | 97 | -7 |
| 26-JAN-24 | Red Velvet | 97 | 98 | -1 |
| 26-JAN-24 | Chocolate | 5 | 100 | -95 |
| 27-JAN-24 | Vanilla | 97 | 100 | -3 |
| 27-JAN-24 | Chocolate | 63 | 100 | -37 |
| 27-JAN-24 | Lemon | 93 | 97 | -4 |
| 27-JAN-24 | Red Velvet | 7 | 98 | -91 |
| 28-JAN-24 | Chocolate | 29 | 100 | -71 |
| 28-JAN-24 | Lemon | 4 | 97 | -93 |
| 28-JAN-24 | Vanilla | 28 | 100 | -72 |
| 28-JAN-24 | Red Velvet | 42 | 98 | -56 |
| 29-JAN-24 | Lemon | 70 | 97 | -27 |
| 29-JAN-24 | Red Velvet | 98 | 98 | 0 |
| 29-JAN-24 | Vanilla | 5 | 100 | -95 |
| 29-JAN-24 | Chocolate | 87 | 100 | -13 |
| 30-JAN-24 | Red Velvet | 21 | 98 | -77 |
| 30-JAN-24 | Chocolate | 54 | 100 | -46 |
| 30-JAN-24 | Lemon | 87 | 97 | -10 |
| 30-JAN-24 | Vanilla | 48 | 100 | -52 |
| 31-JAN-24 | Lemon | 11 | 97 | -86 |
| 31-JAN-24 | Vanilla | 92 | 100 | -8 |
| 31-JAN-24 | Red Velvet | 4 | 98 | -94 |
| 31-JAN-24 | Chocolate | 76 | 100 | -24 |
| 01-FEB-24 | Chocolate | 65 | 96 | -31 |
| 01-FEB-24 | Vanilla | 68 | 100 | -32 |
| 01-FEB-24 | Red Velvet | 93 | 93 | 0 |
| 01-FEB-24 | Lemon | 88 | 91 | -3 |
| 02-FEB-24 | Vanilla | 36 | 100 | -64 |
| 02-FEB-24 | Chocolate | 72 | 96 | -24 |
| 02-FEB-24 | Red Velvet | 37 | 93 | -56 |
| 02-FEB-24 | Lemon | 24 | 91 | -67 |
| 03-FEB-24 | Vanilla | 89 | 100 | -11 |
| 03-FEB-24 | Chocolate | 96 | 96 | 0 |
| 03-FEB-24 | Red Velvet | 52 | 93 | -41 |
| 03-FEB-24 | Lemon | 91 | 91 | 0 |
| 04-FEB-24 | Chocolate | 1 | 96 | -95 |
| 04-FEB-24 | Vanilla | 100 | 100 | 0 |
| 04-FEB-24 | Lemon | 86 | 91 | -5 |
| 04-FEB-24 | Red Velvet | 4 | 93 | -89 |
| 05-FEB-24 | Red Velvet | 91 | 93 | -2 |
| 05-FEB-24 | Vanilla | 48 | 100 | -52 |
| 05-FEB-24 | Chocolate | 34 | 96 | -62 |
| 05-FEB-24 | Lemon | 71 | 91 | -20 |
| 06-FEB-24 | Chocolate | 7 | 96 | -89 |
| 06-FEB-24 | Lemon | 63 | 91 | -28 |
| 06-FEB-24 | Vanilla | 57 | 100 | -43 |
| 06-FEB-24 | Red Velvet | 65 | 93 | -28 |
Knowledge Check
If you’d like to confirm your understanding on the use of aggregate functions with windows and other fundamental concepts, consider solving a handful of my practice problems here.