按月分组,然后按用户ID分组结果

时间:2014-10-04 08:04:30

标签: php mysql sql group-by

我需要计算雇员的工资,这取决于每月添加的行数(使用唯一的picture_id,所以如果相同的图片ID出现两次,则只计算一次) - 据我了解我需要按picture_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计算每个月添加的行数吗?

1 个答案:

答案 0 :(得分: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)