0
idとplayerID、yearとyearID(以下のスキーマ)の両方でこれらのselectステートメントに参加しようとしています。エイリアスHAB - EGも減算します。また、後の階層で除算と減算を実行する前に、両方のselect文で年とIDをグループ化してSUMを集計します。それは私がこれを試してみるときにGでグループ化すると言うと、奇妙に思える。私は、プレイヤーがテーブル内の複数のエントリを持つことができるので、G、単にidと年間でグループに必要いけないと、私たちは前に複数のグループによる操作とマイナスの操作
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';
計算に
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スキーマG、EHとABを総括する必要があります
JUST SCHEMA
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
も同様です。なぜあなたは年別にグループ化したいですか?あなたはプレーヤー1人当たりの割合を得た後、またはプレーヤー1人当たりの合計を得ていますか? – ssn
Ahhhh abs right ...私の部分にこのような迷惑なエラーがあります – dedpo