1
질문의 기본 전제는 각 달마다 샘플을 얻으려는 대형 테이블이 있습니다. 나는 난 후 물건의 종류를 표시하기 위해 아래의 조롱했지만 분명히 그것은임팔라 where 절의 분석 함수
--Create the table
CREATE TABLE exp_dqss_team.testranking (
Name STRING,
Age INT,
Favourite_Cheese STRING
) STORED AS PARQUET;
--Put some data in
INSERT INTO TABLE exp_dqss_team.testranking
VALUES (
('Tim', 33, 'Cheddar'),
('Martin', 49, 'Gorgonzola'),
('Will', 39, 'Brie'),
('Bob', 63, 'Cheddar'),
('Bill', 35, 'Brie'),
('Ben', 42, 'Gorgonzola'),
('Duncan', 55, 'Brie'),
('Dudley', 28, 'Cheddar'),
('Edmund', 27, 'Brie'),
('Baldrick', 29, 'Gorgonzola'));
내가 얻고 싶은 것은 각 치즈 카테고리의 막내 이명 같은 것입니다 ... 실제 데이터 아니다. 아래는 나에게 각 치즈 범주에 대한 연령 순위를 제공하지만, 상위 두에 제한되지 않습니다
SELECT RANK() OVER(PARTITION BY favourite_cheese ORDER BY age asc) AS rank_my_cheese, favourite_cheese, name, age
FROM exp_dqss_team.testranking;
나는 그것이 나에게 다음과 같은 오류 제공하는 WHERE
절을 추가하는 경우 :
WHERE clause must not contain analytic expressions
SELECT RANK() OVER(PARTITION BY favourite_cheese ORDER BY age asc) AS rank_my_cheese, favourite_cheese, name, age
FROM exp_dqss_team.testranking
WHERE RANK() OVER(PARTITION BY favourite_cheese ORDER BY age asc) <3;
을
모든 순위의 테이블을 만든 다음 순위에서 WHERE
절을 사용하여 선택하는 것보다 더 나은 방법이 있습니까?
감사합니다. 나는 아마 그것을 생각하고 있었다고 생각한다! –