我有一张像这样的表:
Key . ClerkID . CustomerID . ProductCode . Date Type . Color
1 1010 123 AAA 2018-01-01 . 1 . Red
2 1010 123 BBB 2018-01-01 . 2 . Blue
3 1010 123 AAA 2018-01-02 . 1 Red
4 1010 456 CCC 2018-01-01 . 1 . Red
5 . 1010 456 DDD 2018-01-02 . 2 Red
6 1010 456 DDD 2018-01-02 . 3 Blue
7 11 . 456 AAA 2018-01-02 . 3 Blue
大约有300,000人参加。我正在尝试运行查询,该查询计算由同一客户,同一职员和同一日期订购的多个产品。
所以它会报告一个这样的表:
Products . Count
AAA . 2
AAA, BBB 1
CCC, DDD 1
DDD 1
实际上,我实际上忽略了任何只有单一产品的条目:
Products . Count
AAA, BBB 1
CCC, DDD 1
编辑:这是一个FIDDLE:http://www.sqlfiddle.com/#!9/3ceb55/3
,决赛桌将是: 文员1010,1030;产品:AAA,BBB,CCC; cnt:3 文员1010,1020;产品:AAA,BBB; cnt:2 职员:1010,1020,1030;产品:AAA; cnt:3
实际上忽略了最后一行会起作用
或者更容易阅读的小提琴:http://www.sqlfiddle.com/#!9/d7252 目标是: 职员:卡尔,鲍勃,戴夫;产品:AAA,BBB,CCC; CNT:4 ...
答案 0 :(得分:1)
计算由同一客户,同一职员和同一日期订购的不同产品的查询,并忽略仅出现一次的产品,是下一个(忽略此处的类型和颜色,尽管可能有很多类型根据您的数据,单个产品代码的颜色和颜色:
SELECT
ClerkID,
CustomerID,
Date,
ProductCode,
COUNT ( * ) as cnt
FROM <your table name>
GROUP BY
ClerkID,
CustomerID,
Date,
ProductCode
HAVING cnt > 1
;