[英]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
我想对Date
, UnitID
和CategoryID
组合为不同键的值求和(希望我的术语正确)。 即最后两行不是唯一的,因为第六行已经具有相同的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.