2016-04-16 50 views
0

enter image description here構文エラー

は、それはいけない、b.hitsのための合計のためになって、合計を無視してくださいそれをエイリアスする方法を知っている。

SELECT n.id, n.bmonth, n.dyear,n.bats, SUM(b.hits) FROM master n 
JOIN (SELECT b.id , b.hits FROM batting GROUP BY id) o 
WHERE n.bmonth == 10 AND n.dyear == 2011) x 
ON x.id=n.id 
ORDER BY total DESC; 

使用する2つのテーブルのスキーマが必要な場合は、以下を参照してください。

INSERT OVERWRITE DIRECTORY '/home/hduser/hivetest/answer4' 
SELECT n.id, n.bmonth, n.dyear,n.bats, SUM(b.hits) FROM master n 
JOIN (SELECT b.id , b.hits FROM batting GROUP BY id) o 
WHERE n.bmonth == 10 AND n.dyear == 2011) x 
ON x.id=n.id 
ORDER BY total DESC; 

答えて

1

最初に、Hiveは==を受け入れますが、それはあなたがそれを使うべきではありません。標準のSQL等価演算子は、単に=です。シノニムを使用する理由はありません。

私はこの問題は、いくつかのことである疑いがある:

  • group byの欠如。
  • 集計関数の誤使用。
  • 正しい順序で行方不明別名
  • SQLクエリ句を
  • アンバランス括弧つまり

、クエリはただ混乱です。クエリ構文の基本を確認する必要があります。これは機能しますか?

SELECT m.id, m.bmonth, m.dyear, m.bats, b.hits as total 
FROM master m JOIN 
    (SELECT b.id, SUM(b.hits) as hits 
     FROM batting b 
     GROUP BY id 
    ) b 
    ON b.id = m.id 
WHERE m.bmonth = 10 AND m.dyear = 2011 
ORDER BY total DESC; 
+0

これは理にかなっていますが、クエリは実行されましたが、結果は返されませんでした。また、b.bmonthはm.bmonthになっていますか? – dedpo

+0

@dedpo。 。 。はい。 –