Подзапрос SQL, получить количество идентификаторов на основе результатов подзапроса

Я написал такой подзапрос:

Select ID, count(*) as cn from xyz group by 1

Результаты в выводе-

Я БЫСп
А3
Б45

Теперь я делаю этот запрос -

SELECT CASE
         WHEN temp.cn > 10 THEN Count(DISTINCT id)
       END AS cn_10,
       CASE
         WHEN temp.cn <= 10 THEN Count(DISTINCT id)
       END AS cn_9
FROM   (SELECT id,
               Count(*) AS cn
        FROM   xyz
        GROUP  BY 1) AS temp; 

надеясь получить вывод, как

cn_10cn_9
300400

Но я продолжаю получать эту ошибку,

SQL compilation error: [temp.cn] is not a valid group by expression

🤔 А знаете ли вы, что...
SQL поддерживает транзакции, обеспечивая целостность данных.


14
1

Ответ:

Решено

Вы можете использовать выражение case в агрегации, как показано ниже, конечно, не проверено, но работает ли это для вас?

select
  Count(case when cn  > 10 then 1 end) cn_10,
  Count(case when cn <= 10 then 1 end) cn_9
from (
    select id, Count(*) cn
    from xyz
    group by Id
)t;