1

したがって、私が使用している特定の列があります: customer_tokenmerchant_idmerchant_category_code、およびtransaction_amount

私の現在のクエリはこれです:

SELECT customer_token, COUNT(transaction_amount), SUM(transaction_amount)
FROM transaction 
                     WHERE file_date>20121031 
                     and file_date<20121201
GROUP BY customer_token

上記のクエリに、結果の一部を追加したいのですが、merchant_category_code は、それぞれの特定の取引金額に基づいて異なる列に分割されますmerchant_category_code。次のような結果になります。

customer_token、count(transaction_amount)、sum(transaction_amount)、count(1位のmerchant_category_codeのtransaction_amount)、count(2位のmerchant_category_codeのtransaction_amount)、count(3位のmerchant_category_codeのtransaction_amount)など...

そしてこれ:

customer_token、count(transaction_amount)、sum(transaction_amount)、sum(ランク1のmerchant_category_codeのtransaction_amount)、sum(ランク2のmerchant_category_codeのtransaction_amount)、sum(ランク3のmerchant_category_codeのtransaction_amount)など...

しかし、これを行う方法、またはそれがまったく可能であるかどうかについて、私は途方に暮れています。

4

1 に答える 1

2

の可能な値が何であるかを事前に知っている場合は、式merchant_category_codeを使用できます。CASE

SELECT customer_token,
       COUNT(transaction_amount),
       SUM(transaction_amount),
       COUNT(CASE WHEN merchant_category_code = 1 THEN transaction_amount END),
       COUNT(CASE WHEN merchant_category_code = 2 THEN transaction_amount END),
       COUNT(CASE WHEN merchant_category_code = 3 THEN transaction_amount END),
       ...
       SUM(CASE WHEN merchant_category_code = 1 THEN transaction_amount END),
       SUM(CASE WHEN merchant_category_code = 2 THEN transaction_amount END),
       SUM(CASE WHEN merchant_category_code = 3 THEN transaction_amount END),
       ...
  FROM transaction 
 WHERE file_date BETWEEN 20121101 AND 20121130
 GROUP
    BY customer_token
;

(または必要IFに応じて式。これら両方のドキュメントについては、Hive wiki の「LanguageManual+UDF」ページの「条件付き関数」というタイトルのセクションを参照してください)。

于 2012-12-10T03:26:35.273 に答える