繁体   English   中英

根据多个列计算不同的值

[英]Count distinct values based on multiple columns

我是MySQL的新手,非常感谢您提出询问的专家提示。 我有以下数据集:

date      UnitID CategoryID  Quantity
2015-01-01   4     s           4
2015-01-01   5     s           6
2015-01-01   4     u          10
2015-01-01   5     u          20
2015-01-02   4     s           3
2015-01-02   5     s           1
2015-01-02   4     u           2
2015-01-02   5     u          32
2015-01-02   4     s           5
2015-01-02   4     s           5

我想对DateUnitIDCategoryID组合为不同键的值求和(希望我的术语正确)。 即最后两行不是唯一的,因为第六行已经具有相同的date + UnitID + Category ,因此查询将不添加这些记录值(10)。

所需的输出是:

date        UnitID  CategoryID  Quantity
2015-01-01  4       s            4
2015-01-01  4       u           10
2015-01-01  5       s            6
2015-01-01  5       u           20
2015-01-02  4       s            3
2015-01-02  4       u            2
2015-01-02  5       s            1
2015-01-02  5       u           32
    declare @bob as table (
date datetime
,UnitID   varchar(10)
,CategoryID  varchar(10)
,Quantity int
)

insert @bob values('2015-01-01','4','s', 4   )
insert @bob values('2015-01-01','5','s', 6   )
insert @bob values('2015-01-01','4','u',10   )
insert @bob values('2015-01-01','5','u',20   )
insert @bob values('2015-01-02','4','s', 3   )
insert @bob values('2015-01-02','5','s', 1   )
insert @bob values('2015-01-02','4','u', 2   )
insert @bob values('2015-01-02','5','u',32   )
insert @bob values('2015-01-02','4','s', 5   )
insert @bob values('2015-01-02','4','s', 5   )

;with cte
AS
(
select 
        * 
        ,row_number() OVER (PARTITION BY date, UnitID, CategoryID 
                            ORDER BY date DESC) AS intRow
from @bob 

--order by date, unitid, CategoryID
)
select 
        date
        ,UnitID
        ,CategoryID
    from 
         cte
where 
          intRow = 1

你的话说

2015-01-02  4       s            3

应该真的是

2015-01-02  4       s           13

如果是这样,那么查询就是

SELECT Date, UnitID, CategoryID, SUM(quantity)
FROM tbl
GROUP BY Date, UnitID, CategoryID;

“我想在...处求和 。”与“因此查询将不添加这些记录值(10)”不同意。 上面的代码将添加它们。 如果您没有添加它们,请解释所需的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM