我需要计算员工的工资,这取决于每月添加的行数(具有唯一的 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
来计算每月添加的行数吗?
最佳答案
如果没有样本,可能很难可视化数据,但如果您希望计算每月唯一的 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)
关于php - 按月份分组,然后按用户 ID 对结果分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26190900/