【问题标题】:mysql avarge countmysql平均计数
【发布时间】:2012-12-29 19:42:28
【问题描述】:
我有一个名为 cmets 的表:
ID | COMMENT | DATE |
---|---------|----------|
1 | TEXT... | 01/01/12 |
2 | TEXT... | 01/01/12 |
3 | TEXT... | 15/01/12 |
4 | TEXT... | 01/01/13 |
表格中有 2012 年的 cmets,2013 年的 cmets 很少。如何仅选择 2012 年的记录,然后获得 2012 年的平均评论数?
【问题讨论】:
标签:
mysql
select
count
average
【解决方案1】:
一个真的不应该在字符串类型的列中存储时间值。我建议你先把你的 DATE 列转换成 MySQL 的 DATE 类型:
ALTER TABLE comments ADD COLUMN new_date DATE AFTER `DATE`;
UPDATE comments SET new_date = STR_TO_DATE(`DATE`, '%d/%m/%y');
ALTER TABLE comments DROP COLUMN `DATE`;
(显然您需要更新您的应用程序代码才能使用此新列)。
然后:
-
如何只选择 2012 年的记录
您可以在过滤器中简单地使用不等式运算符:
SELECT *
FROM comments
WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01'
-
然后得到 2012 年的平均评论数?
不完全确定您所说的“平均评论数”是什么意思,但如果您想要平均每天的 cmets 数:
SELECT COUNT(*) / DATEDIFF('2013-01-01', '2012-01-01')
FROM comments
WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01'