0
我想加入這些關於id和playerID以及year和yearID(下面的模式)的select語句。同樣減去別名HAB-EG在兩個選擇語句中也按年份和id分組,以便在稍後的層次結構中執行分割和減法之前對值進行求和。它說,由G組合,當我嘗試這個,似乎很奇怪。我不需要通過G,只是ID和年級組,因爲玩家可以在表中的多個條目,我們需要將G,EH和AB總結計算之前HIVE多組加減運算
Try this:
SELECT
a.playerID AS ID,
a.yearID AS yearID,
(b.HAB - a.EG) AS `HAB-EG`
FROM
(SELECT
SUM(playerID),
SUM(yearID),
(E/G) AS EG
FROM fielding
WHERE (
yearID > 2005
AND yearID < 2009
AND G > 20
)GROUP BY playerID,yearID
) AS a
JOIN
(SELECT
SUM(id),
SUM(year),
(hits/ab) AS HAB
FROM batting
WHERE(
year > 2005
AND year < 2009
AND ab > 40
) GROUP BY id,year
) AS b ON a.playerID = b.id AND a.yearID = b.year;
JUST SCHEMA
CREATE EXTERNAL TABLE IF NOT EXISTS fielding
(playerID STRING ,yearID INT ,teamID STRING ,lgID STRING ,
POS STRING ,G INT ,GS INT , InnOuts INT , PO INT,A INT, E INT,
DP INT , PB INT , WP INT ,SB INT ,CS INT , ZR INT) ROW
FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION '/home/hduser/hivetest/fielding';
JUST架構
CREATE EXTERNAL TABLE IF NOT EXISTS batting(id STRING, year INT, team STRING,
league STRING, games INT, ab INT, runs INT, hits INT, doubles INT, triples
INT, homeruns INT, rbi INT, sb INT, cs INT, walks INT, strikeouts INT, ibb
INT, hbp INT, sh INT, sf INT, gidp INT) ROW FORMAT DELIMITED FIELDS
TERMINATED BY ',' LOCATION '/home/hduser/hivetest/batting';
似乎你的分組已關閉。您有興趣按非聚合值進行分組。例如。 'SELECT id,sum(value)GROUP BY id'。 – ssn
..還有 - 爲什麼你想按年份分組?你是在每個玩家每年獲得比率之後,還是僅僅是每個玩家? – ssn
Ahhhh abs right ...這樣的公然錯誤我的部分 – dedpo