Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hitung (jumlah, maks, rata-rata) kolom yang dipisahkan koma di mysql

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penanganan NULL di MySQL Setelah Pemicu Pembaruan yang Diaktifkan Hanya pada Perubahan Data

  2. Kiat Penyetelan Kinerja MySQL Untuk Mengoptimalkan Basis Data

  3. Bisakah kueri MySQL mengubah baris menjadi kolom?

  4. Apakah MySQL InnoDB selalu memerlukan indeks untuk setiap batasan kunci asing?

  5. Cara yang lebih baik menyimpan kata sandi di mysql yang dapat didekripsi juga menggunakan php