sql >> データベース >  >> RDS >> Mysql

X日の範囲でグループ化

    日付の例を次に示します。

    create table t1(created date not null);
    
    insert 
      into t1(created) values (date '2011-01-09')
                             ,(date '2011-01-10')
                             ,(date '2011-01-11')
                             ,(date '2011-01-12')
                             ,(date '2011-01-13')
                             ,(date '2011-01-14')
                             ,(date '2011-01-15')
                             ,(date '2011-01-16')
                             ,(date '2011-01-17')
                             ,(date '2011-01-18')
                             ,(date '2011-01-19')
                             ,(date '2011-01-20');
    
    select floor(datediff(now(), created) / 3) * 3 as days_ago
          ,min(created)
          ,max(created)
          ,count(*)
      from t1
     group 
        by floor(datediff(now(), created) / 3);
    
    +----------+--------------+--------------+----------+
    | days_ago | min(created) | max(created) | count(*) |
    +----------+--------------+--------------+----------+
    |        0 | 2011-01-18   | 2011-01-20   |        3 |
    |        3 | 2011-01-15   | 2011-01-17   |        3 |
    |        6 | 2011-01-12   | 2011-01-14   |        3 |
    |        9 | 2011-01-09   | 2011-01-11   |        3 |
    +----------+--------------+--------------+----------+
    4 rows in set (0.00 sec)
    


    1. MySQL置換コマンドで正規表現を使用する方法は?

    2. MySQLExplainの行制限

    3. MySQL:プログラムで外部キーの関係を決定する方法は?

    4. MySQLトリガー-更新後に削除