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)