データベースから製品の売上を価格帯別に抽出しようとしています。
私はかなり複雑な SQL クエリを持っています。
SELECT
SUM((t.price-t.discount)*t.quantity) as totalValue,
MAX(t.price) as maxP,
t.range AS score_range,
COUNT(*) AS count
FROM
(SELECT products.price,
salesRecords.discount,
salesRecords.quantity,
CASE WHEN products.price >=0 AND products.price <50 THEN '0-49'
WHEN products.price >=50 AND products.price <100 THEN '50-99'
WHEN products.price >=100 AND products.price <200 THEN '100-199'
WHEN products.price >=200 AND products.price <350 THEN '200-349'
WHEN products.price >=200 AND products.price <350 THEN '200-349'
WHEN products.price >=350 AND products.price <500 THEN '350-499'
WHEN products.price >=500 AND products.price <800 THEN '500-799'
WHEN products.price >=800 AND products.price <1200 THEN '800-1199'
WHEN products.price >=1200 AND products.price <1800 THEN '1200-1799'
WHEN products.price >=1800 AND products.price <2500 THEN '1800-2499'
ELSE '2500 +' END
AS range FROM salesRecords
LEFT JOIN products ON products.id=salesRecords.itemNo
ORDER BY products.price DESC)t
GROUP BY t.range
ORDER BY maxP DESC
うまくいけば、ここで何が起こっているかがわかります。価格帯内で製品をグループ化し、販売額を合計すると、次のような出力が得られます。
totalValue maxP score_range count
8381 251.17 200-349 35
32522 199.00 100-199 198
22614 99.95 50-99 271
41825 49.99 0-49 2765
ただし、ご覧のとおり、この特定のデータセットには多くのギャップがあります。
35-499、500-799 などのデータが欠落しているscore_range
s の値のみがあります。これは、これらの値のデータがないためです...これは問題ありません...ただし...このデータを JSON として挿入しています200-349, 100-199,50-99, 0-49
オブジェクトをAmCharts
レーダーチャートに変換し、データがアプリケーションにとって本当に意味のあるものになるようにするには、すべての範囲を取得し、単純に を入力する必要があるzeros
ため、取得したいのは次のとおりです。
totalValue maxP score_range count
0 3500 2500 + 0
0 2499 1800-2499 0
0 1799 1200-1799 0
0 1199 800-1199 0
0 799 500-799 0
0 499 350-499 0
8381 251.17 200-349 35
32522 199.00 100-199 198
22614 99.95 50-99 271
41825 49.99 0-49 2765