Php 按月份分组,然后按用户id分组结果

Php 按月份分组,然后按用户id分组结果,php,mysql,sql,group-by,Php,Mysql,Sql,Group By,我需要计算雇员的工资,这取决于每月添加的行数(具有唯一的图片id,因此,如果同一图片id出现两次,则只计算一次)-据我所知,我需要按图片id和月份进行分组 如果我分开做的话,效果非常好 group by MONTH(TimeAdded) 或 这是密码 $data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GRO

我需要计算雇员的工资,这取决于每月添加的行数(具有唯一的
图片id
,因此,如果同一图片id出现两次,则只计算一次)-据我所知,我需要按
图片id
和月份进行分组

如果我分开做的话,效果非常好

group by MONTH(TimeAdded) 

这是密码

$data_qqq = mysql_query("SELECT MONTHNAME(TimeAdded), COUNT(MONTH(TimeAdded)) FROM Picture_Tag WHERE UserID = $user_id GROUP BY MONTH(TimeAdded)");
但是,即使有20行具有相同的
picture\u 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\u id
计算每月添加的行数吗?

如果没有样本,数据可能很难可视化,但如果您希望每月计算唯一的picture\u id的数量,请使用
计数(不同的picture\u id)
。但也要注意,当按“月”分组时,您很可能还需要按年分组,否则结果可能会严重扭曲。(或者使用where子句仅选择您感兴趣的一年。)

试试这个:

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

这将有助于查看一些虚拟数据,从而对表的外观有一个印象
SELECT
   YEAR(TimeAdded)
 , MONTH(TimeAdded)
 , COUNT(DISTINCT picture_id)
FROM Picture_Tag
WHERE UserID = $USER_ID
GROUP BY
   YEAR(TimeAdded)
 , MONTH(TimeAdded)