次のクエリを実行します。これは、売り上げ単位でトップ10の目的地、そしてすべての目的地で販売された総単位のその目的地のシェアを私に取り込みます。重要度の低い結果をグループ化するためにMySQLクエリで 'その他'の行を持つ方法
個別の結果は124件ありますが、トップ10以下のシェアは通常1%未満です。
結果の残りの部分を要約した10番目の「その他」の行で上位9個の結果が得られるクエリを使用できますか?
これは2つのクエリジョブですか?
SELECT a.destination,
SUM(a.units) AS units,
SUM(a.units)/b.total * 100 AS `share`
FROM range_data AS a
CROSS JOIN (SELECT SUM(units) AS total
FROM range_data) AS b
GROUP BY a.destination
ORDER BY units DESC
LIMIT 10;
現在の結果が
destination units share
United Kingdom 433360 21.5943
Turkey 323657 16.1278
China 123264 6.1422
Russia 121595 6.0591
United States 106338 5.2988
Israel 97461 4.8565
Un Arab Emir 85221 4.2466
Egypt 51572 2.5698
Hong Kong 48932 2.4383
Suriname 44650 2.2249
を設定所望の結果は
destination units share
United Kingdom 433360 21.5943
Turkey 323657 16.1278
China 123264 6.1422
Russia 121595 6.0591
United States 106338 5.2988
Israel 97461 4.8565
Un Arab Emir 85221 4.2466
Egypt 51572 2.5698
Hong Kong 48932 2.4383
Other 165854 8.8766
この2つの簡単な手順を実行することをお勧めします。1.まだ実行していない場合は、適切なDDL(および/またはsqlfiddle)を提供して問題を簡単に複製できます。 2.まだ実行していない場合は、手順1で提供された情報に対応する目的の結果セットを指定します。 – Strawberry
UNIONで実行できるはずですが、2番目のクエリを実行する場合と似ています。 PHPハンドリング.. – Yuri
最後の行が結果セットにどのように関係しているのかわかりません – Strawberry