Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получа min max и avg от таблица в 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 с демонстрация

Редактирайте #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 с демонстрация




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вътрешно свързване на 2 таблици със същия идентификатор

  2. MYSQL Изберете 5 записа за последните 5 отделни записа

  3. MySQL преобразуване на дата

  4. Деактивирането на PDO::ATTR_EMULATE_PREPARES причинява „неизвестен“ проблем

  5. MySQL PHP count(*) връща нещо странно