首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL -每隔5分钟获取一次数据,并从以前的行求和值以显示聚合数据

MYSQL -每隔5分钟获取一次数据,并从以前的行求和值以显示聚合数据
EN

Stack Overflow用户
提问于 2014-09-18 12:53:24
回答 1查看 179关注 0票数 0

我需要关于MySQL的帮助...我有以下查询,每5分钟拉取数据一次。但是我需要随着时间的推移将收入加到前一个小时,并在一天结束时给出最终的收入。所以每一行的收入都是sum of the revenue for that timestamp+previous hours total in the current row.

代码语言:javascript
复制
SELECT o.creation_date,
       ROUND(SUM(((it.current_price*quantity)- IFNULL(it.total_adjustment,0))/100),0) AS reven,
       COUNT(o.order_id)
FROM order.order o
JOIN order.order_item it ON o.order_id=it.order_id
WHERE DATE(o.creation_date)='2014-09-16'
  AND o.order_status = "confirmed"
  AND it.line_item_type = 'item'
GROUP BY round(UNIX_TIMESTAMP(o.creation_date)/300);
EN

回答 1

Stack Overflow用户

发布于 2014-09-18 13:39:23

给你一个样本来解决你的主要问题,假设你有一个orders表,里面有这样的收入:

代码语言:javascript
复制
create table orders
(creation_date datetime,
  reven decimal(20,2))
;

insert into orders (creation_date,reven)values
(curdate()+ INTERVAL 1 MINUTE ,100),
(curdate()+ INTERVAL 2 MINUTE ,100),
(curdate()+ INTERVAL 60 MINUTE ,100),
(curdate()+ INTERVAL 61 MINUTE ,100),
(curdate()+ INTERVAL 62 MINUTE ,100),
(curdate()+ INTERVAL 120 MINUTE ,100),
(curdate()+ INTERVAL 121 MINUTE ,100),
(curdate()+ INTERVAL 122 MINUTE ,100)

第一步是让所有日期在五分钟内领先(lead_date)。然后将orders表加入到每个lead_date的一个小时内。

代码语言:javascript
复制
select o1.lead_date,sum(reven) as reven
  from (select distinct FROM_UNIXTIME(round(UNIX_TIMESTAMP(creation_date)/300)*300) as lead_date
          from orders) o1
 inner join orders o2
    on o2.creation_date >= o1.lead_date
   and o2.creation_date < (o1.lead_date + INTERVAL 1 HOUR)
 group by o1.lead_date

结果如下:

代码语言:javascript
复制
LEAD_DATE                         REVEN
September, 18 2014 00:00:00+0000    200
September, 18 2014 01:00:00+0000    300
September, 18 2014 02:00:00+0000    300

我认为您可以将这种方法应用到您的案例中,将revnen替换为(it.current_price*quantity)- IFNULL(it.total_adjustment,0),将您的orderorder_item表作为子查询来替换o2

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25904380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档