Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać min max i avg z tabeli w mysql z różnymi wierszami?

Jeśli chcesz, aby wartości znajdowały się w jednym wierszu, możesz to zrobić:

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

Jeśli chcesz je w oddzielnych wierszach, użyj 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;

zobacz SQL Fiddle z wersją demonstracyjną

Edytuj nr 1, używając dodanych przykładowych danych:

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

Zobacz SQL Fiddle z wersją demonstracyjną




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException Indeks parametru poza zakresem (1> liczba parametrów, czyli 0)

  2. Dodawanie tekstu do bazy danych

  3. Czy w MySQL jest rozróżniana wielkość liter w nazwach kolumn i tabel?

  4. Najlepsze blogi i strony internetowe MySQL dla administratorów baz danych

  5. Instalacja MySQL:BŁĄD:Nie udało się zbudować natywnego rozszerzenia gem