【发布时间】:2019-07-11 16:15:57
【问题描述】:
SELECT orders.Stock ,lflayouts.sides, count(*) as Quantity FROM dash_relationship
JOIN orders ON orders.UID = dash_relationship.form_id
JOIN lfitems ON lfitems.uid = orders.UID
Join lflayouts ON lflayouts.id = lfitems.layout_id
WHERE dash_relationship.machine_id='108'
GROUP BY orders.stock,lflayouts.sides;
以上查询输出如下
STOCK SIDES QUANTITY
paper1 1 214
paper1 2 210
paper2 1 7
paper3 1 2
现在我的问题是,如果我想获得基于不同方面的个股总数,该怎么办。所以我尝试使用下面的查询,它给我一个错误,说服务器版本在第 1 行的 '(partition) 附近使用正确的语法
SELECT orders.Stock ,lflayouts.sides, count(*) as Quantity, SUM(lflayouts.sides) OVER(partition by orders.stock) as Total FROM dash_relationship
JOIN orders ON orders.UID = dash_relationship.form_id
JOIN lfitems ON lfitems.uid = orders.UID
Join lflayouts ON lflayouts.id = lfitems.layout_id
WHERE dash_relationship.machine_id='108'
GROUP BY orders.stock,lflayouts.sides;
EXPECTED OUTPUT
STOCK SIDES QUANTITY TOTAL
paper1 1 214 414 or 214
paper1 2 210 414
paper2 1 7 7
paper3 1 2 2
【问题讨论】:
-
那么你的 MySQL 版本是多少?对于总计,我认为您需要 [partition by] 之后的 [order by]
-
@GenWan MySQL 5.5.62
-
MySQL 从 8.0 版本开始支持窗口函数。
-
我尝试使用 order by inside (partition by orders.stock order by lflayouts.sides) 同样的错误
标签: mysql window-functions mysql-5.5