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

異なる行を持つmysqlのテーブルから最小最大値と平均値を取得するにはどうすればよいですか?

    単一行の値が必要な場合は、次のように実行できます。

    select max(playtime), min(playtime), avg(playtime)
    from yourtable
    group by mediaid;
    

    それらを別々の行に配置する場合は、UNION ALLを使用します :

    select max(playtime) playtime, mediaid, 'Max' Type
    from yourtable
    group by mediaid
    union all
    select min(playtime) playtime, mediaid, 'Min'
    from yourtable
    group by mediaid
    union all
    select avg(playtime) playtime, mediaid, 'Avg'
    from yourtable
    group by mediaid
    order by mediaid, playtime;
    

    SQL Fiddle withDemo を参照してください。

    追加したサンプルデータを使用して、#1を編集します:

    select m.medTitle, 
      min(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
    from tbldoctormediatracktest s
    left join tblmedia m
      on s.MedId = m.MedId
    group by m.medTitle
    union all
    
    select m.medTitle, 
      avg(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
    from tbldoctormediatracktest s
    left join tblmedia m
      on s.MedId = m.MedId
    group by m.medTitle
    union all
    
    select m.medTitle, 
      max(TIMESTAMPDIFF(SECOND, s.dmtViewStart, s.dmtViewEnd)) playtime
    from tbldoctormediatracktest s
    left join tblmedia m
      on s.MedId = m.MedId
    group by m.medTitle
    order by medTitle,  playtime
    

    SQL Fiddle withDemo を参照してください。




    1. CakePHPモデルクエリの戻りデータのフォーマット

    2. MySqlトライキャッチ

    3. 列挙型に実際の値より1つ小さい値を追加するMySQLコネクタ

    4. Linux /MacからAmazonEC2でMySQLに接続するにはどうすればよいですか?