以下の表に考えてみましょう:私はclient_id
とTradeDate
によってグループに、このデータをしようとしていますMySqlでGroup Byの結果をどのように達成するには?
+------------+-----------+-------------+---------+------------+--------+-------------+
| client_id | TradeDate | servicetype | SEGMENT | OrdChannel | orders | OrderAmount |
+------------+-----------+-------------+---------+------------+--------+-------------+
| 1 | 20140611 | Type_1 | CASH | TT | 1 | 39275 |
| 2 | 20150119 | Type_1 | CASH | DNT | 2 | 11856.9 |
| 3 | 20150922 | Type_1 | FNO | OTHER | 1 | 854750 |
| 4 | 20151223 | Type_1 | CASH | TT | 5 | 71075 |
| 5 | 20140529 | Type_1 | Offline | FNO | 1 | 0 |
| 6 | 20160310 | Type_2 | CASH | WEB | 2 | 8009.6 |
| 7 | 20150318 | Type_1 | Offline | FNO | 2 | 432900 |
| 8 | 20150914 | Type_2 | CASH | WEB | 2 | 15612 |
| 9 | 20160317 | Type_2 | FNO | MINI | 1 | 9000 |
| 10 | 20140421 | Type_1 | CASH | TT | 8 | 17112.5 |
+------------+-----------+-------------+---------+------------+--------+-------------+
。したがって、最終的なデータセットには、すべての<client-id, TradeDate>
ペアの各行が含まれます。 私は、このデータから、以下のような特徴を計算したい:すべての中OrdChannelの種類ごとに、同様に
を、私は注文の合計を計算したいすべてのペアのセグメントの種類ごとに
とOrderAmount
ペア、私は注文と注文合計を計算したい最後に、それぞれ
servicetype
の数すなわちType_1
とType_2
の数。select clientsrno, TradeDate, SEGMENT, COUNT(orders) from orders group by clientsrno, TradeDate, SEGMENT;
をしかし、それはなど、
SEGMENT_CASH-orders_sum
のための個別の列を与えていない:+------------+-----------+-------------+---------+------------+--------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+ | client_id | TradeDate | SEGMENT_CASH_orders_sum | SEGMENT_CASH_OrderAmount_sum.... | OrdChannel_TT_orders_sum | OrdChannel_TT_OrderAmount_sum.... | servicetype_Type_1_count | servicetype_Type_2_count | +------------+-----------+-------------+---------+------------+--------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+
はこれまでのところ、私が試してみました:
したがって、最終的なデータセットは以下のように類似の列が含まれます
代わりに私が得る出力は:
ですあなたが和の多く(CASE .... END)で行うことができます+------------+-----------+---------+---------------+
| clientsrno | TradeDate | SEGMENT | COUNT(orders) |
+------------+-----------+---------+---------------+
| 44 | 20141209 | CASH | 23 |
| 44 | 20141211 | FNO | 10 |
+------------+-----------+---------+---------------+
希望の結果を得られないのはなぜですか? – Strawberry