Подзапрос Snowflake для имитации COUNTIF

У меня есть следующий запрос, почему я пытаюсь смоделировать COUNTIF в двух таблицах:

WITH Range__A1_A4 (val) AS (
    SELECT 1 UNION ALL 
    SELECT 2 UNION ALL 
    SELECT 8 UNION ALL 
    SELECT 10
), NFL (SEASON, TEAM, WINS) AS (
    SELECT 2010, 'KC', 10 UNION ALL
    SELECT 2011, 'GB', 11
)
SELECT 
    (SELECT SUM(CASE WHEN NFL.WINS>R.val THEN 1 ELSE 0 END) FROM Range__A1_A4 R) ct,
    *
FROM NFL;

Отсюда я получаю следующую ошибку:

Unsupported subquery type cannot be evaluated

Что не так с этим запросом и как его исправить?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы написал так:

WITH Range__A1_A4 (val) AS (
    SELECT * FROM VALUES 
        (1),
        (2),
        (8),
        (10)
), NFL (SEASON, TEAM, WINS) AS (
    SELECT * FROM VALUES 
        (2010, 'KC', 10),
        (2011, 'GB', 11)
)
SELECT 
    n.*,
    SUM(iff( n.wins > r.val, 1, 0)) as ct_a,
    count_if (n.wins > r.val) as ct_b
FROM NFL AS n
JOIN Range__A1_A4 AS r
group by 1,2,3;
ВРЕМЯ ГОДАКОМАНДАВЫИГРЫШИКТCT_B
2010КС1033
2011ГБ1144

да -- есть ли сокращение для чего-то вроде group by NFL.* ?

David542 12.05.2022 07:01

кстати, по какой причине коррелированный подзапрос не работает в случае, когда таблицы не соединены?

David542 12.05.2022 07:02

поддержка коррелированных подзапросов является «частичной», и иногда простые подзапросы могут перестать работать, когда вы добавляете «несвязанный материал», и оптимизатор не может понять, как заставить его работать

Simeon Pilgrim 12.05.2022 07:08

тоже группа по делу, не то, чтобы я знаю..

Simeon Pilgrim 12.05.2022 07:09

да, похоже, он работает в нескольких других бэкэндах: gyazo.com/26cd47608d1bc3d7030b6b8c4f5cf163

David542 12.05.2022 07:22

о, конечно, это сделать в состоянии. Я подозреваю, что в основном легко сделать плохо (с точки зрения производительности), поэтому просто не добавлять охват функций, когда пользователь лучше знает форму своих данных и может написать SQL для решения проблемы.

Simeon Pilgrim 12.05.2022 08:19

Другие вопросы по теме