Count

在查詢中使用 DISTINCT 和 COUNT

  • December 15, 2016

我在同一個查詢中使用DISTINCTand時遇到問題。COUNT我想獲得獨特的物品,然後獲得每個月的總數。(我已經在兩個查詢中完成了此操作,但我知道有更好的方法。)

詢問:

SELECT
 FORMAT_TIMESTAMP('%Y-%m', Sell_Date) AS Sell_Date,
 count(*) Total_Sold
FROM
 `project.dataset.items`
GROUP BY
 Sell_Date
ORDER BY
 Sell_Date

結果(片段):

Row     Sell_Date   Total_Sold   
1       2010-05        15   
2       2010-06        40  
3       2010-07        75  
4       2010-08        20  

這是我想要的,但是,這包含重複的Item_Id條目。

如果我SELECT用這個替換上面的:

SELECT
 DISTINCT Item_Id,
 FORMAT_TIMESTAMP('%Y-%m', Sell_Date) AS Sell_Date,

我收到此錯誤:

錯誤:SELECT 列表表達式引用的列 Item_Id 既不分組也不聚合

$$ 2:12 $$

如果我將其替換為GROUP BY

GROUP BY
     Sell_Date, Item_Id

結果(片段):

Row     Item_Id      Sell_Date   Total_Sold  
1       992         2010-05         1   
2       118         2010-05         1   
3       855         2010-05         1   
4       846         2010-05         1   
5       989         2010-05         1   
6       505         2010-05         1   
7       997         2010-05         1   
8       983         2010-05         1   
9       122         2010-05         1   
10      601         2010-05         1   
11      845         2010-05         1  

我怎樣才能得到DISTINCT項目然後計算每個月的總數?

count (distinct item_id)


SELECT
 FORMAT_TIMESTAMP('%Y-%m', Sell_Date) AS Sell_Date,
 count(*) Total_Sold,
 count (distinct item_id) as distinct_item_id 

FROM
 `project.dataset.items`
GROUP BY
 FORMAT_TIMESTAMP('%Y-%m', Sell_Date) AS Sell_Date
ORDER BY
 Sell_Date

引用自:https://dba.stackexchange.com/questions/158261