2016-10-24 83 views
1

我有一張包含shop_id,名稱和promotion_code的表格。我想獲得每個shop_id的記錄數量,但是有一些重複的記錄,其中多次使用了promotion_code。我想忽略這些。忽略GROUP BY上的重複項

我曾嘗試:

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

但是這給了我全零作爲結果。

+0

添加一些樣本表數據和預期的結果。 (以及格式化文本。) – jarlh

+0

順便說一句,不可能爲已發佈的選擇返回零。 – dnoeth

回答

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

嘗試:

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

SELECT shop_id,COUNT(*)作爲total_entries FROM TBL GROUP BY PROMOTION_CODE,shop_id

而不是使用(*),你可以使用DISTINCT函數,以確保您嘗試分組的所有數據都是唯一值。

你可以做這樣的事情:

SELECT shop_id, COUNT(DISTINCT promotion_code) as total_entries FROM tbl GROUP BY shop_id