2014-10-04 99 views
0

我需要根據每個月添加的行數來計算僱員的工資(具有唯一的picture_id,因此如果相同的圖片ID出現兩次,則只計算一次) - 所以據我所知,我需要由picture_id和幾個月的組合。按月份分組,然後按用戶ID分組結果

它的工作原理,如果我做單獨即

group by MONTH(TimeAdded) 

GROUP BY picture_id 

這裏完美的罰款是代碼

$data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GROUP BY MONTH(TimeAdded)"); 

但這計數增加每個月參賽人數甚至如果有20行與picture_id相同。現在

,如果我嘗試

$data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GROUP BY MONTH(TimeAdded),**picture_id**"); 

我得到一個非常奇怪搞砸結果...

不知道如何計算行數添加了獨特picture_id每個月?

+0

這將有助於看到一些假的數據,以得到一個什麼樣的表看起來的印象喜歡 – rkok 2014-10-04 08:14:10

回答

0

如果沒有樣本,可能很難將數據可視化,但是如果您希望統計每個月唯一的picture_id的數量,那麼請使用COUNT(DISTINCT picture_id)。但也要注意,按「月份」分組時,您最有可能還需要逐年分組,否則結果可能嚴重偏離。 (或者使用where子句只選擇單一的一年你有興趣)。

試試這個:

SELECT 
    YEAR(TimeAdded) 
, MONTH(TimeAdded) 
, COUNT(DISTINCT picture_id) 
FROM Picture_Tag 
WHERE UserID = $USER_ID 
GROUP BY 
    YEAR(TimeAdded) 
, MONTH(TimeAdded)