【发布时间】:2014-07-02 14:41:20
【问题描述】:
我有一个 SQL/Java 代码问题。基本覆盖如下:带有表的 MySQL 数据库。在此表中有多个列。一列由名称组成。关联的列是月。在第三列有计数。所以一个示例表将是
john - january - 5
john - january - 6
mary - january - 5
Alex - February- 5
John - February - 6
John - February - 4
Mary - February - 3
John - march - 4
表格持续到 5 月。
所以约翰在五个月后出现,玛丽在 3 个月后出现,亚历克斯在 1 个月后出现。目前,我的 SQL 查询有点像这样。
select name, sum(count)/4
from table where (category ='something'
AND month not like 'May') group by name;
基本上,这个查询应该做的只是显示每个名字和每月的平均计数。因此,总和将除以四(因为我排除了 May,所以它必须除以 Jan-April/4)。但是,问题是有些名字只出现在一个月(或两三个月)内。
这意味着对于该名称,计数的总和将仅除以该特定数字,以获得月份的平均计数。我该怎么办?我觉得这似乎需要在 where 子句中使用一些 if 语句。有点像如果不同的计数(因为月份可能重复)是某个数字,然后将总和(计数)除以每个名称的该数字?
另外,我认为这可能不是 where if 子句问题。我读过一些论坛,可能会用到一些案例?
【问题讨论】:
-
是mysql还是sql-server?
-
"a mysql database" 我相信它只是标记错误。
-
Mysql 数据库。我很抱歉我搞砸了标签。我对此很陌生,不确定一切如何运作。如果我在其他地方搞砸了,请告诉我。我希望将来能够以最好的方式寻求帮助。
-
你考虑过使用
AVG()函数吗? -
如果我理解正确的话,对于每个名字 N 你想要 SUM(count) / M 其中 M 是实际上对名字 N 有计数的月数?
标签: mysql