php - 按月份分组,然后按用户 ID 对结果分组

标签 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 来计算每月添加的行数吗?

最佳答案

如果没有样本,可能很难可视化数据,但如果您希望计算每月唯一的 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/

相关文章:

mysql 字符集 utf 8 排序规则(dup 键)无法正常工作

PHP脚本无法连接到sql数据库

php - 使用核心 php 在 Firebase 上创建动态链接

javascript - 如何选择和更改按钮的颜色并在单击其他按钮时恢复为原始颜色

mysql - SQL 是有效的,但是有什么方法可以使它更小(包括 sqlfiddle)

php - 各区用户数均为0

mysql - 索引该查询

java - 在 CriteriaBuilder 查询的 groupBy 子句中包含实体

javascript - 如何编写无需用户交互即可在加载时打开两个选项卡的 url?

php - PDO FetchAll从mysql回显表中的数据