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

Изчислете (сума, макс, средна стойност) колона, разделена със запетая, в mysql

Не знам кое приложение проектирате, но мисля, че беше лош дизайн да съхранявате стойности, разделени със запетая, вместо да създавате подробности за таблица. Можете да решите това, без всъщност да използвате функция на mysql. Първо, трябва да convert comma separated columns into rows и тогава можете да направите някои изчисления. Тази заявка може да ви помогне:

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

Резултатите трябва да са следните:

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. Вземете единичен елемент от списъчен низ в MySQL

  2. Приложение за Android Xamarin с онлайн база данни MySql/Sql

  3. Как да се свържете с mysql, работещ в контейнер от хост машина

  4. Как да тествам MySQL транзакции?

  5. MySQL:Ляво съединение и колона със същото име в различни таблици