Mysql 在SQL中对组进行计数
我需要创建一个对GROUPBY子句计数的查询。明确地 在Order_ID和SUB_ID列上,统计每个Order_ID和SUB_ID的产品_ID数 应该是这样的: 但是,数据设置在奇数一侧,获得减去计数列的信息的唯一方法当然是:Mysql 在SQL中对组进行计数,mysql,sql,group-by,Mysql,Sql,Group By,我需要创建一个对GROUPBY子句计数的查询。明确地 在Order_ID和SUB_ID列上,统计每个Order_ID和SUB_ID的产品_ID数 应该是这样的: 但是,数据设置在奇数一侧,获得减去计数列的信息的唯一方法当然是: SELECT tbl1.Order_Id ,tbl1.Sub_Id ,tbl1.Product_Id ,tbl1.Product_Value ,tbl2.Product_Owner ,tbl2.Owner_Id FROM
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
我该如何添加这样一个专栏?我想您只需要分组方式:
由于查询仅从tbl1返回行并使用左联接,因此您应该能够执行以下操作:
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
编辑:
我明白了,这是样本数据。在这种情况下,您可能只需要行号:
这将返回总计数,我想要一个累积计数。但我喜欢把它作为一张单独的桌子放在一起。
SELECT tbl1.Order_Id, tbl1.Sub_Id,
COUNT(tbl1.Product_Id)
FROM tbl1
GROUP BY tbl1.Order_Id, tbl1.Sub_Id;
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;