【问题标题】:SQL query to get records of before last 30 days( Not last 30 days )SQL查询获取过去30天之前的记录(不是过去30天)
【发布时间】:2019-10-25 06:10:58
【问题描述】:

我想找出我最近 30 天的值与前 30 天的值的不同百分比。我已经得到了过去 30 天价值的总和。如何获得过去 30 天的总和?

这是选择过去 30 天总和的查询。

SELECT SUM(paymentAmount) as usd30day
FROM `tbl_pi_payment` 
WHERE currencyCode = 'USD' and renewalDate >= NOW() - INTERVAL 30 DAY

示例:今天是 10 月 25 日。 我有 10 月 25 日到 9 月 26 日的值的总和。 现在我需要 9 月 26 日到 8 月 25 日的值的总和

【问题讨论】:

  • 基本上,您想要一个日期小于“今天减去 30 天”的值?这是一个提示!
  • 你不会坚持到 30 到 30 岁吗?
  • @AxelH 是的,我想要一个比“今天减去 30 天”少 30 天的值

标签: mysql sql select intervals


【解决方案1】:

你可以试试下面 -

SELECT SUM(case when renewalDate >= NOW() - INTERVAL 30 DAY paymentAmount else 0 end) as usd30day ,
SUM(case when renewalDate >= NOW() - INTERVAL 60 DAY and renewalDate < NOW() - INTERVAL 30 DAY paymentAmount else 0 end) as usd60day
FROM tbl_pi_payment
WHERE currencyCode = 'USD' 

【讨论】:

  • 我只想要一个比“今天减去 30 天”少 30 天的值。
【解决方案2】:

根据renewalDate获取以前的交易

select sum(case when renewalDate >= NOW() - INTERVAL 30 DAY then paymentAmount else 0 end) as usd30day 
    , sum(case when datediff(now() - renewalDate) <= 30 then paymentAmount else 0 end) as usd30prevday 
from tbl_pi_payment 
where 
    currencyCode = 'USD' 

【讨论】:

    【解决方案3】:
    SELECT datediff(NOW(), renewalDate) % 30 as every30day, SUM(paymentAmount) as usd30day
    FROM `tbl_pi_payment`
    WHERE currencyCode = 'USD' 
    GROUP BY datediff(NOW(), renewalDate) % 30
    

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2011-01-03
      • 1970-01-01
      • 2013-07-08
      • 2011-08-24
      • 1970-01-01
      • 2013-12-29
      • 2017-07-06
      • 1970-01-01
      相关资源
      最近更新 更多