mysql - 在 SQL 中计算一个组
问题描述
我需要创建一个对GROUP BY
子句计数的查询。具体来说,在Order_ID
和SUB_ID
列上并计算Product_IDs
每个Order_ID
和的数量SUB_ID
。
它应该如下所示:
但是,数据设置有点奇怪,获取信息的唯一方法(当然减去 Count 列)是:
SELECT
tbl1.Order_Id
,tbl1.Sub_Id
,tbl1.Product_Id
,tbl1.Product_Value
,tbl2.Product_Owner
,tbl2.Owner_Id
FROM
tbl1 AS tbl1
LEFT OUTER JOIN
tbl2 AS tbl2 ON tbl1.Order_Id=tbl2.Order_Id AND tbl1.Sub_Id=tbl2.Sub_Id
我将如何添加这样的列?
解决方案
我想你只需要GROUP BY
:
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1 LEFT OUTER JOIN
tbl2
ON tbl1.Order_Id = tbl2.Order_Id AND tbl1.Sub_Id = tbl2.Sub_Id
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
因为查询仅从tbl1
并使用 a返回行LEFT JOIN
,所以您应该能够执行以下操作:
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
编辑:
我明白了,那是样本数据。在这种情况下,您可能只想row_number()
:
SELECT tbl1.Order_Id, tbl1.Sub_Id, tbl1.Product_Id, tbl1.Product_Value,
tbl2.Product_Owner, tbl2.Owner_Id
ROW_NUMBER() OVER (PARTITION BY tbl1.Order_Id, tbl1.Sub_Id ORDER BY tbl1.Product_Id) as seqnum
FROM tbl1 LEFT OUTER JOIN
tbl2
ON tbl1.Order_Id = tbl2.Order_Id AND
tbl1.Sub_Id = tbl2.Sub_Id;
推荐阅读
- excel - 如何从外部为 excel 文件宏签名证书 - 而不是通常的 Excel 菜单
- grpc - 我可以用 gRPC 替换基于套接字的协议吗?
- javascript - 数据索引 NodeList.Foreach JavaScript
- python - pandas:将 100 多个变量融合到 100 多个新数据帧中
- javascript - 函数内部的全局变量不能在外部访问
- sql - Q. 如何从 XSD 字符串字段中选择命名元素值
- python - 为什么在这种情况下,在 Django 中,views.py 中的函数需要请求参数?
- c - 如何在不使用 c 中的任何递归函数的情况下遍历目录?
- c++ - 如何在 C++ 函数中移动变量
- python - 检查字符串中每一行的前几位,如果它们相等,则将这些行的一部分一起打印