【问题标题】: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`;

(显然您需要更新您的应用程序代码才能使用此新列)。

然后:

  1. 如何只选择 2012 年的记录

    您可以在过滤器中简单地使用不等式运算符:

    SELECT *
    FROM  comments
    WHERE new_date BETWEEN '2012-01-01' AND '2013-01-01'
    
  2. 然后得到 2012 年的平均评论数?

    不完全确定您所说的“平均评论数”是什么意思,但如果您想要平均每天的 cmets 数:

    SELECT COUNT(*) / DATEDIFF('2013-01-01', '2012-01-01')
    FROM   comments
    WHERE  new_date BETWEEN '2012-01-01' AND '2013-01-01'
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多