繁体   English   中英

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

[英]Get Aggregate Count of Column After Group by in 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

任何帮助,将不胜感激。

你需要使用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()

3)如此使用的指定pin的值的SUM()SUM()

这可以做到

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子句中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM