sql >> Database teknologi >  >> RDS >> Mysql

Hvordan får man min max og avg fra tabel i mysql med forskellige rækker?

Hvis du vil have værdierne i en enkelt række, kan du gøre dette:

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

Hvis du vil have dem i separate rækker, skal du bruge en 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;

se SQL Fiddle with Demo

Rediger #1 ved at bruge dine eksempeldata tilføjet:

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

Se SQL Fiddle with Demo




  1. Ret "Mindst et af argumenterne til COALESCE skal være et udtryk, der ikke er NULL-konstanten" i SQL Server

  2. Hvordan kan jeg foretage en migrering i laravel 5.5?

  3. Mysql:OMDØB TABEL, HVIS FINDER

  4. Tjek om der findes en række ved hjælp af det gamle mysql_* API