在Mysql中获取分组后的列的聚合计数

时间:2014-12-23 10:50:43

标签: php mysql

我不是一个强大的数据库人,但我对它有中级知识。这是我面临的挑战,我有一张像 -

这样的表
pin  type   day month year timestamp value
---- -----  --- ---   ---  --------  -----
123  clicks 02  12    2014 unixtime  3
123  clicks 03  12    2014 unixtime  7
111  clicks 02  12    2014 unixtime  10

我想要一个mysql查询,它会选择pin=$pin and month=$month的所有行,并返回总计数为value的所有列

对于上面的示例数据集,id喜欢得到类似

的内容
pin  type   month year  timestamp value
---- -----  ---   ---   ---       --------  -----
123  clicks 12    2014  unixtime  10

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您需要使用GROUP BY,SUM()和COUNT()

SELECT COUNT(month) as month, SUM(value) AS value
FROM TABLE_NAME 
WHERE pin = '$pin'
AND month='$month' // Added $month in condition
GROUP BY pin, month, year // Added some conditions

<强>解释

你需要

1)pin指定的所有行,使用WHERE

2)所使用的pin指定的COUNT()月份COUNT,pin

3)如此使用的指定SUM()的值,{{1}}

答案 1 :(得分:0)

这可以作为

完成
select
pin,
type,
day,
month,
year,
timestamp,
sum(value) as value 
from table_name
where pin='$pin' and month='$month'
group by pin,month,year

如果您不希望每月进行分组,请将其从group by子句中删除,并仅使用年份。

请注意,上面的查询是特定于mysql的。在标准中,当您使用聚合函数选择某些列时,它们必须出现在group by子句中。