gpt4 book ai didi

mysql - SQL SUM 参数

转载 作者:行者123 更新时间:2023-11-29 08:30:06 24 4
gpt4 key购买 nike

我正在尝试根据用户拥有的条目数 VS 条目的值 VS 他们一周内可以拥有的最大条目数对用户的积分进行求和。

这是一个日志系统。他们每天都会输入他们参与的所有事件。即:骑自行车。他们可以每天记录,但我们只想每周为他们的每项事件提供 X 积分。

表格:

积分 - 保存每天每项事件 (valueID) 的条目(日记条目)

值(value)观 - 包含他们可以选择的所有可能的事件

用户 - 保存参与日记的用户

valueID, valueName, value, maxWeekValue
1, Biking, 1, 6

pointID, userID, valueID, date_created
1, 16, 1, 2013-05-19
2, 16, 1, 2013-05-20
3, 16, 1, 2013-05-21
4, 16, 1, 2013-05-22
5, 16, 1, 2013-05-23
6, 16, 1, 2013-05-24
7, 16, 1, 2013-05-25

userID, name
16, Braden

期刊:5/19-5/25 = 我每天骑自行车并记录。我一周内最多只能获得 6 分,因此我的总分应该为 6。

我需要一个 SQL 语句,它将获取每个帖子,按值分组,如果< maxWeekValue 则给出值*条目的总和。

我可以用 PHP 做到这一点。但我知道 mySQL 中有一种更简洁的方法。

这是我到目前为止所拥有的:

SELECT p.valueID,p.date_created,v.valueName,v.value,v.maxWeekValue,SUM(v.value) as sumd 
FROM `points` AS p
INNER JOIN `users` AS u ON u.id = p.userID
INNER JOIN `values` AS v ON p.valueID = v.valueID
WHERE p.date_created
BETWEEN SUBDATE(curdate(), 7)
AND curdate()

这可以正确计算总和,但没有条件逻辑将其限制为每周的 maxValue。

在我跳过并使用 PHP 执行此操作之前,你们中的任何 SQL 向导可以提供一些帮助吗?预先感谢您!

最佳答案

试试这个:

SELECT p.valueID,p.date_created,v.valueName,v.value,v.maxWeekValue, case when SUM(v.value) < v.maxWeekValue then SUM(v.value) else v.maxWeekValue end as sumd 
FROM `points` AS p
INNER JOIN `users` AS u ON u.id = p.userID
INNER JOIN `values` AS v ON p.valueID = v.valueID
WHERE p.date_created
BETWEEN SUBDATE(curdate(), 7)
AND curdate()

关于mysql - SQL SUM 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868650/

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