2017-05-09 10 views
2

以下のようなクエリを実行しようとしています。目標はすべてuser_keyの合計アクティビティ数を取得することですが、user_keyは複雑な構造を持ち、 '|'記号私は部分文字列関数を使用しなければなりませんでした。私は、クエリを実行しようとしているときしかし、私は エラーを取得する:Splice(NoSql)の部分文字列でSUMとGROUP BY

SQL Error [42Y36]: Column reference 'USER_KEY' is invalid, or is part of an invalid expression. For a SELECT list with a GROUP BY, the columns and expressions being selected may only contain valid grouping expressions and valid aggregate expressions. 

substring関数は、このクエリの外OK動作します。この問題の回避策はありますか? BY列スプライスマシン(NOSQL)

SELECT 
    substr(user_key, instr(user_key,'|') + 1) AS new_user_key, 
    SUM(
     CAST(
      activity_count AS INTEGER 
     ) 
    ) AS Total 
FROM 
    schema_name.table_name 
GROUP BY 
substr(user_key, instr(user_key,'|') + 1) 

答えて

0

あなたのグループを使用すると、SELECT、私は答えを自分で見つけ

SELECT 
    substr(user_key, instr(user_key,'|') + 1) AS new_user_key, 
    SUM(
     CAST(
      activity_count AS INTEGER 
     ) 
    ) AS Total 
FROM 
    schema_name.table_name 
GROUP BY 
    substr(user_key, instr(user_key,'|') + 1) AS new_user_key 
+0

これは機能しませんでした。 GROUP BY式にエイリアスを追加することはできません。 – DorinD

0

と一致する必要があります。誰かが便利なこのポストを見つけるだろうし、彼または彼女にいくつかの時間を節約する

SELECT new_table.new_user_key, sum(new_table.total) 
from 
    (
    SELECT 
     substr(user_key, instr(user_key,'|') + 1) AS new_user_key, 
     CAST(activity_count AS INTEGER) AS Total 
    FROM schema_name.table_name 
    ) 
    as new_table 
GROUP BY 
new_table.new_user_key 

ましょう希望:私は、テーブルのサブクエリを使用しました。