2016-07-15 4 views
1


Я пытаюсь присвоить значение ранжирования на основе количества товаров (например, prod 1 имеет счет 100, который должен быть максимальным, должен иметь ранг 1, prod 2, второй самый высокий счет 80 должен иметь ранг 2 и т. Д.), Но когда я выполняю ниже запрос, я получаю сообщение об ошибке: «Поле« rank_ »не найдено в таблице
. Пожалуйста, дайте мне знать, где я буду неправильно
Ранг() в bigquery

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 

ответ

1

Попробуйте ниже

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 
Смежные вопросы