gpt4 book ai didi

Mysql用日期条件对多个列值求和

转载 作者:行者123 更新时间:2023-11-30 22:30:39 25 4
gpt4 key购买 nike

我有一个包含以下列的客户表,其中包含每个客户每月的每日购买数据。

ID|MONTH|DAY1|DAY2|DAY3|DAY4|..........|DAY31
1 | 4 | 10 | 20 | 0 | 15 |..........|10
2 | 4 | 20 | 30 | 23 | 7 |..........| 5
1 | 5 | 5 | 10 | 20 | 4 |..........| 20
1 | 6 | 12 | 0 | 10 | 5 |..........| 10
2 | 6 | 10 | 10 | 5 | 10 |..........| 5

现在我想找出每个客户在 15/4/2015 到 15/6/2015 之间购买的总数量。

我是 mysql 的新手,所以不知道如何前进。

提前致谢

最佳答案

为一个月中的每一天都使用一个列来存储值并不是一个好主意。但有时我们会遇到错误的数据格式,下面是您如何获得所需计数的方法:

SELECT ID, SUM(qty)
FROM (
SELECT
ID,
MAKEDATE(2015,1) + INTERVAL (month-1) MONTH AS dt,
DAY1 AS qry
FROM yourtable
UNION ALL
SELECT
ID,
MAKEDATE(2015,1) + INTERVAL (month-1) MONTH AS dt + INTERVAL 1 DAY,
DAY2 AS qry
UNION ALL
SELECT
ID,
MAKEDATE(2015,1) + INTERVAL (month-1) MONTH AS dt + INTERVAL 2 DAY,
DAY3 AS qry
FROM yourtable
UNION ALL
...
until day 31
...
) s
WHERE
dt>='2015-04-15' AND dt<='2015-06-15'
GROUP BY ID

我使用子查询规范化数据结构,然后对外部查询进行计数,一个简单的 where 子句和分组依据将给出您需要的结果。

关于Mysql用日期条件对多个列值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976282/

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