欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql连续聚合原理与用法实例分析

程序员文章站 2022-06-02 09:29:30
本文实例讲述了mysql连续聚合原理与用法。分享给大家供大家参考,具体如下: 连续聚合是按时间顺序对有序数据进行聚合的操作。 在下面的救示例中将使用emporders表,该表用于存...

本文实例讲述了mysql连续聚合原理与用法。分享给大家供大家参考,具体如下:

连续聚合是按时间顺序对有序数据进行聚合的操作。

在下面的救示例中将使用emporders表,该表用于存放每位员工每月发生的订购数量。

运行如下 代码创建emporders表并填充示例数据。

create table emporders (
empid int not null,
ordermonth date not null,
qty int not null,test
primary key (empid,ordermonth)
);

查询order表和orderdetails表住emporder表插入每个月的订单,sql语句如下(技巧是根据月分组)

insert into emporders
select a.employeeid,orderdate as order date,sum(quantity) as qty
from orders a
inner join orderdetails b
on a.orderid=b.orderid
group by employid,date_format(orderdate,'%y-m');

下面给出生成示例数据的php文件

<?php
$sql = "insert into emporders select %s,'%s-%02d-01',%s;".'<br />';
$insert_sql = '';
for($empid=1;$empid<=8;$empid++)
{
  for($year=2009;$year<=2015;$year++)
  {
    for($month=1;$month<=12;$month++)
    {
      $num = rand(20,800);
      $insert_sql .= sprintf($sql,$empid,$year,$month,$num);
    }
    $insert_sql .= '<br />';
  }
}
echo $insert_sql;

以下是员工订单表emporder部分数据

mysql连续聚合原理与用法实例分析

下面根据emporders表讨论3个连续聚合的问题:累积、滑动、年初至今。