-4

私はコメントという名前のテーブルを持っています:

ID | COMMENT | DATE     |
---|---------|----------|
1  | TEXT... | 01/01/12 |
2  | TEXT... | 01/01/12 |
3  | TEXT... | 15/01/12 |
4  | TEXT... | 01/01/13 |

表には 2012 年のコメントと 2013 年のコメントがいくつかあります。2012 年のレコードのみを選択して、2012 年の平均コメント数を取得するにはどうすればよいですか?

4

1 に答える 1

0

文字列型の列に一時的な値を格納するべきではありません最初に 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 年の平均コメント数を取得しますか?

    「平均コメント数」の意味が完全にはわかりませんが、1 日あたりの平均コメント数が必要な場合:

    SELECT COUNT(*) / DATEDIFF('2013-01-01', '2012-01-01')
    FROM   comments
    WHERE  new_date BETWEEN '2012-01-01' AND '2013-01-01'
    
于 2013-01-15T16:42:25.857 に答える