如何获取由另一列分区的列中仅包含最大值行的表?

问题描述 投票:0回答:1

我正在尝试获取每天消耗的卡路里的最大值。我不知道如何获取查询结果,我想象每个日期只有 1 行,其中一列包含每天的总卡路里值。

Current MySQL query result here 旁边带有红色星号的值是我每天想要的值。

with meals_in_day as

(
select *, 
row_number() over (partition by meal_date order by meal_name ) as meals_through_day,
sum(calories) over (partition by meal_date order by meal_name ) as incremental_calories
from calories_data
)

select *
from meals_in_day;

我到目前为止已经汇总了每天膳食分配的卡路里,但我被困在这里了。希望有人能够帮助我达到我想要的查询结果。

提前致谢!

sql mysql sum row-number
1个回答
0
投票

要获取最大值(即当天的总量),您可以使用子查询来选择每天的最大增量卡路里。

WITH meals_in_day AS (
    SELECT
        meal_date,
        SUM(calories) OVER (PARTITION BY meal_date ORDER BY meal_name) AS incremental_calories
    FROM calories_data
)
SELECT
    meal_date,
    MAX(incremental_calories) AS total_calories
FROM meals_in_day
GROUP BY meal_date;
© www.soinside.com 2019 - 2024. All rights reserved.