MySQL根据条目的相同性计算大表

时间:2018-05-29 01:53:56

标签: mysql

我有一张像这样的表:

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 ...

1 个答案:

答案 0 :(得分:1)

计算由同一客户,同一职员和同一日期订购的不同产品的查询,并忽略仅出现一次的产品,是下一个(忽略此处的类型和颜色,尽管可能有很多类型根据您的数据,单个产品代码的颜色和颜色:

SELECT
ClerkID,
CustomerID,
Date,
ProductCode,
COUNT ( * ) as cnt 
FROM <your table name>
GROUP BY
ClerkID,
CustomerID,
Date,
ProductCode 
HAVING cnt > 1
;