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

MySQLは、重複する可能性のある日付で開始日と終了日の合計を取得する方法

    合計を集計する前に、変数を使用して範囲を修正します

    SQLデモ

    SELECT t.`fk_id`,
           @rn := if(@id = `fk_id`, 
                     @rn + 1, 
                     if(@id:=`fk_id`, if(@end:='1900-01-01 00:00:00',1,1), if(@end:='1900-01-01 00:00:00',1,1))   
                    ) as rn,
           if(start < @end, 
              @end, 
              if(@end := end, `start`, `start`) 
             ) as `start`, 
           end
    FROM Table1 t
    CROSS JOIN (SELECT @id := 0, @end := STR_TO_DATE('1900-01-01 00:00:00', '%Y-%m-%d %H:%i:%s') as e, @rn := 0) t
    ORDER BY `fk_id`, `start`
    

    出力




    1. 更新後にMariaDBを開始できません:[警告]テストファイル/home/mysql/beta.lower-testを作成できません

    2. OracleでサポートされているROUND()およびTRUNC()日付関数のフォーマットモデル

    3. GUIMySQLデータベースフロントエンド

    4. OracleでONUPDATECASCADEを使用して外部キーを作成するにはどうすればよいですか?