[英]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.