1

以下のようなテーブルがありますtrades

traders   qty

abc      50000
xyz      35000
pqr      25000
xxx      10000
yyy      20000
uuu      15000
abc      2000
xyz      3000
pqr      1500 

上位 3 人の qty 賢明なトレーダーと他のすべてのトレーダーを別の行に取得する必要があります。

SELECT trader,SUM(qty)
FROM traders
GROUP BY trader DESC
LIMIT 3

上記のクエリから、以下のような回答を得ることができます

tr        qty

abc      52000
xyz      38000
pqr      26500

しかし、私の要件は以下の通りです

tr        qty

abc      52000
xyz      38000
pqr      26500
other    45000   ----- with this column for all other traders except the largest 3
4

2 に答える 2

3

このクエリを試してください-

SELECT
  IF(t2.trader IS NULL, 'other', t1.trader) trader,
  SUM(qty) qty
FROM traders t1
  LEFT JOIN (
  SELECT trader, SUM(qty) FROM traders
    GROUP BY trader
    ORDER BY SUM(qty) DESC
    LIMIT 3) t2
  ON t1.trader = t2.trader
GROUP BY trader
ORDER BY IF(t2.trader IS NULL, 1, 0), qty DESC

+--------+-------+
| trader | qty   |
+--------+-------+
| abc    | 52000 |
| xyz    | 38000 |
| pqr    | 26500 |
| other  | 45000 |
+--------+-------+
于 2012-11-09T09:52:35.170 に答える