Saya tidak tahu aplikasi apa yang Anda desain, tetapi saya pikir itu adalah desain yang buruk untuk menyimpan nilai dalam koma yang dipisahkan alih-alih membuat detail tabel. Anda dapat menyelesaikan ini tanpa menggunakan fungsi mysql sebenarnya. Pertama, Anda perlu convert comma separated columns into rows
dan kemudian Anda dapat melakukan beberapa perhitungan. Kueri ini dapat membantu Anda :
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
Hasilnya harus seperti ini:
id max min sum avg
--------------------------------------
1 1 9 23 4,6
2 8 2 19 4,75
3 9 1 33 5,5