Rank() in bigquery




我正在尝试根据产品计数分配排名值(例如,产品 1 的计数为 100,最大应该有等级 1,产品 2 的第二高计数 80 应该有等级 2,依此类推)有,但是当我执行下面的查询时,我收到一个错误说 - 在表中找不到字段"rank_
"。请让我知道我哪里出错

SELECT
  ProdName,
  NoofProds,
  rank_
FROM (
  SELECT
    ProdName,
    COUNT(ProdName) AS NoofProds,
    RANK() OVER (PARTITION BY ProdName ORDER BY NoofProds DESC) AS rank_
  FROM
    [prodtable]
  WHERE
    (STRFTIME_UTC_USEC(Timestamp,"%Y%m%d")) = (STRFTIME_UTC_USEC(DATE_ADD(CURRENT_TIMESTAMP(), -1, "day"), "%Y%m%d"))
  GROUP BY
    1,
    3
  ORDER BY
    2 DESC)
GROUP BY
  1,
  2,
  3
ORDER BY
  rank_ DESC

试试下面

SELECT
  ProdName,
  NoofProds,
  RANK() OVER(ORDER BY NoofProds DESC) AS rank_ 
FROM
(
  SELECT
    ProdName,
    COUNT(ProdName) AS NoofProds 
  FROM [prodtable]
  WHERE (STRFTIME_UTC_USEC(Timestamp,"%Y%m%d")) = (STRFTIME_UTC_USEC(DATE_ADD(CURRENT_TIMESTAMP(), -1, "day"), "%Y%m%d"))
  GROUP BY 1
)
ORDER BY rank_ DESC

最新更新