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

mysqlはループで行を数えます

    作業する必要があるのは、保証がまだ有効か期限切れか、および保証日です。そのため、最初にそれを反映するテーブルを作成する必要があります。

    select   product
           , IF( warranty >= NOW(), 1, 0 ) as valid
           , IF( warranty < NOW(), 1, 0 ) as expired
           , warranty as last
    from     (
               select   product
                    ,   ADDDATE( purchased, INTERVAL 5 YEAR ) as warranty
               from     productWarranty
             ) w
    group by product
    ;
    

    それはあなたにそのようなものを与えるでしょう:

    +---------+-------+---------+---------------------+
    | product | valid | expired | warranty            |
    +---------+-------+---------+---------------------+
    | Hammer  |     1 |       0 | 2017-01-01 00:00:00 |
    | Nipper  |     1 |       0 | 2017-01-01 00:00:00 |
    | Nipper  |     1 |       0 | 2017-01-01 00:00:00 |
    | Nipper  |     1 |       0 | 2017-01-01 00:00:00 |
    | Saw     |     1 |       0 | 2017-01-01 00:00:00 |
    | Saw     |     0 |       1 | 2011-01-01 00:00:00 |
    | Saw     |     1 |       0 | 2017-01-01 00:00:00 |
    | Saw     |     1 |       0 | 2017-01-01 00:00:00 |
    +---------+-------+---------+---------------------+
    

    次に、集計関数を使用して、探している情報をフィルタリングして合計します。

    select   product
           , SUM( IF( warranty >= NOW(), 1, 0 ) ) as valid
           , SUM( IF( warranty < NOW(), 1, 0 ) ) as expired
           , MAX( warranty ) as last
    from     (
               select   product
                      , adddate( purchased, interval 5 year ) as warranty
               from productWarranty
             ) w
    group by product
    ;
    
    +---------+-------+---------+---------------------+
    | product | valid | expired | last                |
    +---------+-------+---------+---------------------+
    | Hammer  |     1 |       0 | 2017-01-01 00:00:00 |
    | Nipper  |     3 |       0 | 2017-01-01 00:00:00 |
    | Saw     |     3 |       1 | 2017-01-01 00:00:00 |
    +---------+-------+---------+---------------------+
    


    1. 同じテーブルトリガーmysqlに挿入します

    2. どちらの時系列データベースが優れているか:TimescaleDBとInfluxDB

    3. ErlangemysqliPhone絵文字エンコーディングの問題

    4. goinsqlを使用して動的クエリを実行します