sql >> データベース >  >> RDS >> Mysql

mysqlの(sum、max、avg)コンマ区切り列を計算します

    どのアプリケーションを設計しているのかわかりませんが、テーブルの詳細を作成する代わりに、値をコンマで区切って格納するのは悪い設計だったと思います。実際に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. 作成済みのsqliteデータベース(xamarin)をインポートします

    2. SQL Serverのラッチ–知っておくべきその他のラッチ

    3. ld:macOS BigSur11.4でのmysql2gemRubyのバンドルインストール中に-lzstdのライブラリが見つかりません

    4. R12.2への段階的なアップグレードプロセスパート-3のアップグレード