忽略GROUP BY上的重复项

时间:2016-10-24 08:29:18

标签: mysql sql grouping

我有一个包含shop_id,name和promotion_code的表。我想获取每个shop_id的记录数量,但是有一些重复记录,其中多次使用promotion_code。我想忽略这些。

我试过了:

SELECT shop_id, count(*) as total_entries FROM tbl GROUP BY shop_id

这给了我正确的结构,但它确实计算了所有重复的行。所以我想我会首先尝试将它们分组在promotion_code上,然后再在shop_id上进行分组:

SELECT shop_id, count(*) as total_entries FROM tbl GROUP BY promotion_code, shop_id

但这给了我所有的零结果。

3 个答案:

答案 0 :(得分:2)

SELECT shop_id, count(distinct promotion_code) as total_entries FROM tbl GROUP BY shop_id

答案 1 :(得分:2)

尝试:

select shop_id, count(distinct promotion_code)
from tbl
group by shop_id

答案 2 :(得分:1)

  

SELECT shop_id,count(*)as total_entries FROM tbl GROUP BY promotion_code,shop_id

您可以使用DISTINCT函数代替使用(*),以确保您尝试分组的所有数据都是唯一值。

你可以这样做:

%load_ext autoreload %autoreload 2