sql >> Database >  >> RDS >> Mysql

Hoe haal ik min max en avg uit de tabel in mysql met verschillende rijen?

Als u de waarden in een enkele rij wilt hebben, kunt u dit doen:

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

Als je ze in aparte rijen wilt hebben, gebruik dan een 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;

zie SQL Fiddle met demo

Bewerk #1, gebruik uw voorbeeldgegevens toegevoegd:

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

Zie SQL Fiddle met demo




  1. Wat is het langst mogelijke wereldwijde telefoonnummer dat ik zou moeten overwegen in SQL varchar(lengte) voor telefoon?

  2. laatste vrijdag van de maand in MySQL

  3. Kan mysql2 gem niet installeren op macOS Sierra

  4. Toegang verlenen tot v$ views (v$session ,v$instance)