繁体   English   中英

mysql:获取达到目标的最短日期

[英]mysql: get minimum date when goal is reached

我希望这个描述是清楚的:

我有一个包含以下字段的表:

用户身份 order_id 创建日期 分数 姓名
u.id_1 o.id_1 日期_1 0.0024 一些名字
u.id_2 o.id_2 日期_2 0.0053 一些名字

我想要另一个字段,它告诉我每个 user_id 是它获得至少 0.05 个分数的最小日期。

我有这个查询

SELECT r.user_id as user_id,
       r.id as order_id,
       r.created_at as creation_date,
       r.fraction as fractions,
       r.mining_name as name,
       SUM(r.fraction) OVER (PARTITION BY r.user_id ORDER BY r.created_at) as growing_sum,
       CASE WHEN SUM(r.fraction) OVER (PARTITION BY r.user_id ORDER BY r.created_at) >=0.05 THEN TRUE ELSE FALSE END AS isInClub500
FROM yield_mining_rent r
ORDER BY user_id, creation_date

它告诉我是否告诉我一个累积总和,以及我是否超过 0.5 个分数,但我也想要一个字段。

我知道如果我像这样使用 CTE,我可以做到这一点:

WITH CTE AS (SELECT r.user_id                                                           as user_id,
                    r.id                                                                as order_id,
                    r.created_at                                                        as creation_date,
                    r.fraction                                                          as fractions,
                    r.mining_name                                                       as name,
                    SUM(r.fraction) OVER (PARTITION BY r.user_id ORDER BY r.created_at) as growing_sum,
                    CASE
                        WHEN SUM(r.fraction) OVER (PARTITION BY r.user_id ORDER BY r.created_at) >= 0.05 THEN TRUE
                        ELSE FALSE END                                                  AS isInClub500
             FROM yield_mining_rent r
             ORDER BY user_id, creation_date
)
SELECT user_id,
       min(creation_date)
FROM CTE
WHERE isInClub500 = true
GROUP BY user_id

但我的问题是:有没有办法在没有 CTE 的情况下得到这个? 太感谢了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM