mysql连续聚合

时间:2025-05-05 09:38:02

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

在下面的救示例中将使用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部分数据
aaarticlea/png;base64,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" alt="" />
下面根据EmpOrders表讨论3个连续聚合的问题:累积、滑动、年初至今。