在SQL中统计一个组

问题描述 投票:-1回答:1

我需要创建一个查询GROUP BY子句的查询。具体来说,在Order_IDSUB_ID列上计算每个Product_IDsOrder_IDSUB_ID数。

它应该如下所示:

enter image description here

但是,数据在奇数侧设置了一点,获取信息的唯一方法(当然减去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

我该如何添加这样的列?

mysql sql group-by
1个回答
1
投票

我想你只需要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返回行并使用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;
© www.soinside.com 2019 - 2024. All rights reserved.