Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 需要帮助对可用订单明细表进行分组,以获得计数(订单行项目)、数量和计数(数量)的分布_Mysql_Sql_Mysql Workbench_Sequelpro - Fatal编程技术网

Mysql 需要帮助对可用订单明细表进行分组,以获得计数(订单行项目)、数量和计数(数量)的分布

Mysql 需要帮助对可用订单明细表进行分组,以获得计数(订单行项目)、数量和计数(数量)的分布,mysql,sql,mysql-workbench,sequelpro,Mysql,Sql,Mysql Workbench,Sequelpro,我有一个包含以下信息的订单表 订单ID、产品ID、订购数量 OID PID Qty 1 10 1 1 20 2 2 10 2 2 40 4 3 50 1 3 20 3 4 30 1 4 90 2 4 90 5 5 10 2 5 20 2 5 70 5 5 60 1 6 80 2 如果我运行以下查询 select `Qty`, count(`Qty`) from `table` group by `Qty`

我有一个包含以下信息的订单表

订单ID、产品ID、订购数量

OID PID Qty
1   10  1
1   20  2
2   10  2
2   40  4
3   50  1
3   20  3
4   30  1
4   90  2
4   90  5
5   10  2
5   20  2
5   70  5
5   60  1
6   80  2
如果我运行以下查询

select `Qty`, count(`Qty`) 
from `table`
group by `Qty`
我得到了表中的数量分布,即

Qty count(`Qty`)
1   4
2   6 
3   1
4   1
5   2
我还想找到订单\行\项目级别的数量分布

即有多少订单有一个行项目,有一个数量的项目,两个数量的项目,等等,类似的

Count(Order_line_item)    Qty        Count(Qty)
1                         2          1
2                         1          2
2                         2          2
2                         3          1
2                         4          1
3                         1          1
3                         2          1
3                         5          1
4                         1          1
4                         2          2
4                         5          1
我应该在上面的查询中做什么修改来实现这个查询

SELECT  count_order_line_items, `Qty`, count(*)
FROM (
   SELECT count(*) over (partition by `OID`) as count_order_line_items,
         `Qty`
   FROM Table1
) x
GROUP BY count_order_line_items, `Qty`
演示:

如果您的mysql版本小于8,请尝试此版本

SELECT count_order_line_items, `Qty`, count(*)
FROM Table1 t1
JOIN (
   SELECT `OID`, count(*) as count_order_line_items
   FROM Table1
   GROUP BY `OID`
) t2 ON t1.`OID` = t2.`OID`
GROUP BY count_order_line_items, `Qty`
演示:

尝试此查询

SELECT  count_order_line_items, `Qty`, count(*)
FROM (
   SELECT count(*) over (partition by `OID`) as count_order_line_items,
         `Qty`
   FROM Table1
) x
GROUP BY count_order_line_items, `Qty`
演示:

如果您的mysql版本小于8,请尝试此版本

SELECT count_order_line_items, `Qty`, count(*)
FROM Table1 t1
JOIN (
   SELECT `OID`, count(*) as count_order_line_items
   FROM Table1
   GROUP BY `OID`
) t2 ON t1.`OID` = t2.`OID`
GROUP BY count_order_line_items, `Qty`


演示:

您的样本数据似乎与描述不一致。我现在已更新了描述,请建议进行修改以到达样本输出表。列名仍然没有正确对齐。请修复。当然,感谢您的编辑建议,我已经更新了说明中的列名,并且@TimBiegeleisen输出表请告诉我是否需要我的进一步输入以获得此查询的帮助。您的示例数据似乎与说明不符。我现在已经更新了说明,请建议进行修改,以到达样本输出表。列名仍然没有正确对齐。请修复。当然,感谢您的编辑建议,我已经更新了描述中的列名,并且输出表@TimBiegeleisen请告诉我是否需要我的进一步输入来获取此查询的帮助@krokodilko感谢您的回答,但是当我为我的表运行此命令时,我得到了错误------您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'(按
OID划分)作为第3行的计数项目、
Qty
F'的正确语法--------由于它在fiddle@sakura01您的mysql版本是8.0ok之前的版本,我不知道,谢谢,在这种情况下该怎么办@strawberry我已经在我的回答中添加了一个新的查询,用于小于8的版本谢谢@krokodilko这对我来说非常有效!:)上帝保佑你!谢谢您的回答@krokodilko,但是当我为我的表运行这个时,我得到了一个错误------您的SQL语法有一个错误;检查与您的MySQL服务器版本对应的手册,以了解使用near'(按
OID划分)作为第3行的计数项目、
Qty
F'的正确语法--------由于它在fiddle@sakura01您的mysql版本是8.0ok之前的版本,我不知道,谢谢,在这种情况下该怎么办@strawberry我已经在我的回答中添加了一个新的查询,用于小于8的版本谢谢@krokodilko这对我来说非常有效!:)上帝保佑你!