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

合計に基づいてMySQLの十分位数を計算します

    MySQLで十分位数を計算して、最良の顧客を特定できます。基本的に、総売上高に基づいて顧客を10のグループにランク付けしてグループ化します。結果に基づいて、より焦点を絞った、関連性の高い保持イニシアチブを考え出すことができます。これを行うための既製のクエリがあります。

    MySQLで十分位数を計算する

    例:テーブルの注文があります これには、各ユーザーのすべての製品注文が含まれています。 MySQLで十分位数を計算したい。

    order
    +-----------+------------+----------+
    |  user_id  |   product  |   sales  |
    +-----------+------------+----------+
    |     1     |     Soap   |    10    |
    |     4     |   Perfume  |   100    |
    |     1     |   Noodles  |   20     |
    |     3     |     Deo    |   200    |
    +-----------+------------+----------+
    deciles
    +-----------+----------+---------+---------------+
    |  user_id  |   total  |  rank   |     decile    |
    +-----------+----------+---------+---------------+
    |     1     |    30    |    3    |       3       |
    |     4     |   100    |    2    |       7       |
    |     3     |   200    |    1    |      10       |
    +-----------+----------+---------+---------------+

    合計に基づいてMySQLの十分位数を計算するために使用できるクエリは次のとおりです。列(user_id、sales、table)を置き換えるだけです。各ユーザーの総売上高を集計します。次に、それらを総売上高でランク付けします。最後に、ランクを使用して十分位数を計算します。

    select user_id,total,rank,round(10*(cnt-rank+1)/cnt,0) as decile from   
    (SELECT  user_id,total,@curRank := @curRank + 1 AS rank
    FROM      (select user_id,sum(sales) as total from `order` group by user_id)
    p, (SELECT @curRank := 0) r
    ORDER BY  total desc ) as dt,(select count(distinct user_id) as cnt from
    `order`) as ct

    テーブル内の各ユーザーの総売上高がすでにあり、テーブルを直接使用して十分位数を計算する場合は、次のクエリを使用します

    1. トランザクションの影響を受けないシーケンス?

    2. MySQLの単一引用符、二重引用符、およびバッククォート

    3. Windows上のODBCアプリケーションをSugarCRMに接続します

    4. PLSQLカーソルの例-明示カーソル、暗黙カーソル、および参照カーソル