mysql查询查找一段时间内的固定总和

标签 mysql sum period

我有一个带有以下列的 mysql 表

订单 ID 客户ID 总金额 添加日期

现在,我想查询某个特定客户,以了解该客户在其订单历史记录的六个月内是否已完成超过或等于 12000 美元的订单金额。这个时期并不是最近的。

有什么解决办法吗?

问候, 迪彭

最佳答案

select sum(total_amount) >= 12000 over_12000
from mytable
where customer_id = nnn
and date_added between 'YYYY-MM-DD' and date_add('YYYY-MM-DD', interval 6 month)

将 nnn 替换为特定客户 ID,并将 YYYY-MM-DD 替换为您感兴趣的 6 个月期间的开始时间。

更新:

这将使用客户最后一次订购之前的 6 个月时间:

select sum(total_amount) >= 12000 over_1200
from mytable join (select max(date_added) last_date
                   from mytable
                   where customer_id = nnn) last
where customer_id = nnn
and date_added between last_date and date_sub(last_date, interval 6 month)

更新2:

select m1.date_added end_date, sum(m2.total_amount) >= 12000 
from mytable m1 join mytable m2 on m2.date_added between date_sub(m1.date_added, interval 6 month) and m1.date_added and m1.customer_id = m2.customer_id
where m1.customer_id = nnn
group by end_date
order by end_date

关于mysql查询查找一段时间内的固定总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744282/

相关文章:

javascript - 在node-express应用程序中使用node-mysql建立共享连接

mysql - 按升序返回行

mysql - 如何从表中选择特定的 id,同时找出一个查询中总共有多少行?

python - 如何在数据框末尾添加某些列的总和

Java - 设置期间

android - 一定时间后无限调用某些功能

mysql - 在日期范围和特定时间范围之间选择

MySQL:如何在一个查询中获取所有字段的 SUM()?

ruby:当总和为 21 时,添加数字并打印 true

mysql - sql where 子句中的最后 n 个工作日