Elliott이 언급했듯이, 순서를 정의 할 방법이 필요하다. 테이블에 정의 할 컬럼이 있어야합니다. orderable 유형의 모든 열이 될 수 있습니다. 쿼리 아래 당신이 무엇을 요구 할 것입니다
#standardSQL
SELECT
pos,
team_cd,
DENSE_RANK() OVER(PARTITION BY grp ORDER BY pos) AS RANK
FROM (
SELECT
pos,
team_cd,
COUNTIF(team_cd) OVER(ORDER BY pos ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS grp
FROM `project.dataset.table`
)
-- ORDER BY pos
당신은
다음과 같은 질문에서 dummydata를 사용하여 재생/테스트 할 수 있습니다 (이 BigQuery에 표준 SQL입니다) -
Asuming 테이블에
pos
열이있다 어떤 이유로 당신은 여전히 BigQuery를 기존 SQL에 바인딩 된 경우
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 AS pos, FALSE AS team_cd UNION ALL
SELECT 2, TRUE UNION ALL
SELECT 3, FALSE UNION ALL
SELECT 4, FALSE UNION ALL
SELECT 5, FALSE UNION ALL
SELECT 6, TRUE UNION ALL
SELECT 7, FALSE UNION ALL
SELECT 8, TRUE
)
SELECT
pos,
team_cd,
DENSE_RANK() OVER(PARTITION BY grp ORDER BY pos) AS RANK
FROM (
SELECT
pos,
team_cd,
COUNTIF(team_cd) OVER(ORDER BY pos ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS grp
FROM `project.dataset.table`
)
ORDER BY pos
, 아래 사용 (하지만 moving to Standard SQL을 고려 - 그것은 매우 BigQuery의 팀에 의해 권장) 할 수
#legacySQL
SELECT
pos,
team_cd,
DENSE_RANK() OVER(PARTITION BY grp ORDER BY pos) AS RANK
FROM (
SELECT pos, team_cd, IFNULL(grp, 0) grp
FROM (
SELECT
pos,
team_cd,
SUM(team_cd) OVER(ORDER BY pos ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS grp
FROM [project:dataset.table]
)
)
ORDER BY pos
이 순서를 정의하는 방법이 필요합니다. 행 번호와 같은 다른 열을 사용할 수 있습니까? 그렇지 않으면 그러한 쿼리를 작성할 수있는 방법이 없습니다. –