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

Oblicz (sum,max,avg) kolumnę oddzieloną przecinkami w mysql

Nie wiem, jaką aplikację projektujesz, ale uważam, że przechowywanie wartości oddzielonych przecinkami zamiast tworzenia szczegółów tabeli było złym projektem. Możesz rozwiązać ten problem bez użycia funkcji mysql. Najpierw musisz convert comma separated columns into rows a następnie możesz wykonać obliczenia. To zapytanie może Ci pomóc :

select id,max(val) as max,min(val) as min,sum(val) as sum,avg(val) as avg
from(
    select id,(substring_index(substring_index(t.poin, ',', n.n), ',', -1)) val
        from poin_dtl t cross join(
         select a.n + b.n * 10 + 1 n
         from 
            (select 0 as n union all select 1 union all select 2 union all select 3 
                union all select 4 union all select 5 union all select 6 
                union all select 7 union all select 8 union all select 9) a,
            (select 0 as n union all select 1 union all select 2 union all select 3 
                union all select 4 union all select 5 union all select 6 
                union all select 7 union all select 8 union all select 9) b
            order by n 
        ) n <-- To make this simple, Create a table with one column that has 100 rows.
    where n.n <= 1 + (length(t.poin) - length(replace(t.poin, ',', '')))
    order by val asc
) as c_rows -- c_rows = convert comma separated columns into rows
group by id

Wyniki powinny wyglądać tak:

id     max     min      sum      avg
--------------------------------------
1      1       9        23        4,6
2      8       2        19        4,75
3      9       1        33        5,5



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Listy w klauzuli MyBatis „IN”

  2. Wybierz największą wartość na każde ostatnie 7 dni

  3. Jak skonfigurować Hibernate do odczytu/zapisu do różnych źródeł danych?

  4. enum lub char(1) w MySQL

  5. mysql2 gem, Rails 3.0.3 i błędy niekompatybilnego kodowania znaków