Обнаружено "" CASE "" CASE "" в BigQuery - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы назначить диапазон значений для каждого заказа, который у нас был. Я пробовал этот код для достижения своей цели:

SELECT Subtotal, COUNT(CASE Subtotal)

CASE Subtotal

WHEN Subtotal>0 AND Subtotal<10 THEN ‘0-9,99’
WHEN Subtotal>=10 AND Subtotal<15 THEN ‘10-14,99’
WHEN Subtotal>=15 AND Subtotal<20 THEN ‘15-19,99’
WHEN Subtotal>=20 AND Subtotal<24,90 THEN ‘20-24,89’
WHEN Subtotal>=24,90 AND Subtotal<30 THEN ‘24,90-29,99’
WHEN Subtotal>=30 AND Subtotal<35 THEN ‘30-34,99’
WHEN Subtotal>=35 AND Subtotal<40 THEN ‘35-39,99’
WHEN Subtotal>=40 AND Subtotal<45 THEN ‘40-44,99’
WHEN Subtotal>=45 AND Subtotal<50 THEN ‘45-49,99’
WHEN Subtotal>=50 AND Subtotal<55 THEN ‘50-54,99’
WHEN Subtotal>=55 AND Subtotal<60 THEN ‘55-59,99’
WHEN Subtotal>=60 AND Subtotal<65 THEN ‘60-64,99’
WHEN Subtotal>=65 AND Subtotal<70 THEN ‘65-69,99’
WHEN Subtotal>=70 AND Subtotal<75 THEN ‘70-74,99’
WHEN Subtotal>=75 AND Subtotal<80 THEN ‘75-79,99’
WHEN Subtotal>=80 AND Subtotal<85 THEN ‘80-84,99’
WHEN Subtotal>=85 AND Subtotal<90 THEN ‘85-89,99’
WHEN Subtotal>=90 AND Subtotal<95 THEN ‘90-94,99’
WHEN Subtotal>=95 AND Subtotala<100 THEN ‘95-99,99’
WHEN Subtotal>=100 AND Subtotal<125 THEN ‘100-124,99’
WHEN Subtotal>=125 AND Subtotal<150 THEN ‘125-149,99’
WHEN Subtotal>=150 AND Subtotal<200 THEN ‘150-199,99’
ELSE ‘+200’

END

FROM [orders.orders.shopify.Orders_Shopify_may_2020]

WHERE Subtotal IS NON NULL 

GROUP BY CASE

ORDER BY CASE DESC

Но я получаю «Encountered» «CASE» «CASE» "" в BigQuery, как у кого-то идея?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

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

#legacySQL    
SELECT 
  CASE 
    WHEN Subtotal>0 AND Subtotal<10 THEN '0-9,99'
    WHEN Subtotal>=10 AND Subtotal<15 THEN '10-14,99'
    WHEN Subtotal>=15 AND Subtotal<20 THEN '15-19,99'
    WHEN Subtotal>=20 AND Subtotal<24.90 THEN '20-24,89'
    WHEN Subtotal>=24.90 AND Subtotal<30 THEN '24,90-29,99'
    WHEN Subtotal>=30 AND Subtotal<35 THEN '30-34,99'
    WHEN Subtotal>=35 AND Subtotal<40 THEN '35-39,99'
    WHEN Subtotal>=40 AND Subtotal<45 THEN '40-44,99'
    WHEN Subtotal>=45 AND Subtotal<50 THEN '45-49,99'
    WHEN Subtotal>=50 AND Subtotal<55 THEN '50-54,99'
    WHEN Subtotal>=55 AND Subtotal<60 THEN '55-59,99'
    WHEN Subtotal>=60 AND Subtotal<65 THEN '60-64,99'
    WHEN Subtotal>=65 AND Subtotal<70 THEN '65-69,99'
    WHEN Subtotal>=70 AND Subtotal<75 THEN '70-74,99'
    WHEN Subtotal>=75 AND Subtotal<80 THEN '75-79,99'
    WHEN Subtotal>=80 AND Subtotal<85 THEN '80-84,99'
    WHEN Subtotal>=85 AND Subtotal<90 THEN '85-89,99'
    WHEN Subtotal>=90 AND Subtotal<95 THEN '90-94,99'
    WHEN Subtotal>=95 AND Subtotala<100 THEN '95-99,99'
    WHEN Subtotal>=100 AND Subtotal<125 THEN '100-124,99'
    WHEN Subtotal>=125 AND Subtotal<150 THEN '125-149,99'
    WHEN Subtotal>=150 AND Subtotal<200 THEN '150-199,99'
    ELSE '+200'
  END Subtotal_bucket,
  COUNT(1) volume
FROM [whatever your table reference]
WHERE Subtotal IS NOT NULL 
GROUP BY Subtotal_bucket
ORDER BY volume DESC    

Кроме того, я вижу, что вы все еще используете BigQuery Legacy SQL - Переход на стандарт SQL настоятельно рекомендуется

0 голосов
/ 19 июня 2020

Ваш оператор case должен выглядеть одинаково -

SELECT Subtotal, COUNT(CASE Subtotal)

CASE 
WHEN Subtotal>0 AND Subtotal<10 THEN ‘0-9,99’
WHEN Subtotal>=10 AND Subtotal<15 THEN ‘10-14,99’
...
...
ELSE ‘+200’
END
FROM [orders.orders.shopify.Orders_Shopify_may_2020]
WHERE Subtotal IS NON NULL 
GROUP BY CASE
ORDER BY CASE DESC

Также это условие не будет работать в операторе CASE -

WHEN Subtotal>=20 AND Subtotal<24,90 THEN ‘20-24,89’
WHEN Subtotal>=24,90 AND Subtotal<30 THEN ‘24,90-29,99’

Вы должны его изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...