gpt4 book ai didi

mysql - 如何在 SUM 中使用带有 CASE 的 WHERE 子句?

转载 作者:行者123 更新时间:2023-11-29 05:20:54 25 4
gpt4 key购买 nike

我有两个表,一个是任务列表。每个任务(行)由一对唯一的 story_idpos_id(销售点 ID)指定,并包括日期 last_completed。另一个表是具有 priority 编号的 POSes 列表。

这就是我需要的:我将为每个任务调用 x 数量,即自上次完成后的时间除以其 POS 的优先级数。我需要每个故事所有 x 的所有 POS 的总和。

除此之外,有些任务从未完成,所以 last_completedNULL;对于这些任务,我想将 x 设置为 10。

这是我尝试过的方法,但是我在 WHERE 上遇到错误:

SELECT t.story_id, SUM(
CASE
WHEN t.last_completed IS NULL THEN 10
ELSE DATEDIFF(NOW(), t.last_completed)/p.priority
END
WHERE t.pos_id = p.id) AS weeks
FROM test_task t, test_pos p
GROUP BY story_id;

我还在 ELSE 的同一行尝试了 WHERE 子句,但这也没有用。

谁能告诉我如何将 priorityCASE 内的 last_completed 日期相关联 SUM?

最佳答案

据推测,这是您想要的查询:

SELECT t.story_id,
SUM(CASE WHEN t.last_completed IS NULL THEN 10
ELSE DATEDIFF(NOW(), t.last_completed)/p.priority
END) as weeks
FROM test_task t JOIN
test_pos p
ON t.pos_id = p.id
GROUP BY story_id;

您的条件应该在 on 子句中用于显式 join。这与 select 子句中的 case 表达式无关。

关于mysql - 如何在 SUM 中使用带有 CASE 的 WHERE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25936917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com