2016-12-09 7 views
0

では、私はハイブで次のクエリを実行しようとしていない:Hadoopの - ハイブサブクエリ - 箇条

SELECT COUNT(*) 
FROM mydata 
WHERE store NOT IN (SELECT store_out 
        FROM (SELECT a.store as store_out, COUNT(*) AS CNT 
          FROM mydata a 
          GROUP BY store) TB1 
        WHERE CNT > AVG(CNT) + STDDEV(CNT) AND CNT < AVG(CNT) - STDDEV(CNT)) 

をしかし、私は次のエラーを取得しています:

Error while compiling statement: FAILED: SemanticException [Error 10249]: Line 3:6 Unsupported SubQuery Expression 'store': Correlating expression cannot contain unqualified column references. 

どのようにすることができます私は別の方法でこのクエリを書いていますか?

ありがとうございます!私はこれを確認するのは難しいですので、あなたがデータを正確ではありませんが、私は

SELECT COUNT(*) 
FROM (
    SELECT a.* 
    , flg 
    FROM mydata a 
    LEFT OUTER JOIN (
    SELECT store_out, flg 
    FROM (
     SELECT store_out 
     , cnt 
     , 1 AS flg 
     , AVG(cnt)   OVER() AS avg_cnt 
     , STDDEV_SAMP(cnt) OVER() AS std_cnt 
     FROM (
     SELECT store AS store_out 
      , COUNT(*) AS cnt 
     FROM mydata 
     GROUP BY store) x 
    ) y 
    WHERE cnt > avt_cnt + std_cnt AND cnt < avg_cnt - std_cnt) z 
    ON a.store = z.store_out) final 
WHERE flg IS NULL 

ような何かをするだろう

+0

HiveのWHERE句にサブクエリを含めることはできません。 – gobrewers14

+0

ハム...オクラホマ。私はHiveでどのようにクエリを構築できるかを知る必要があります。なにか提案を? –

答えて

1

は基本的には、サブクエリに参加し、ダミー列を作成します左。その列はメインテーブルには存在しないので、すべてのflg値がNULLの場合、これらは必要なストアです。お役に立てれば。

+0

多くのあなたの助けに感謝!それは私にこのエラーを与えます: UDAF 'AVG'ハイブ –

+0

がまだ編集されていません。 WHERE句にも集合関数を持つことはできません。 – gobrewers14

+0

多くのありがとう!!!!クエリはTOPです! –

関連する問題