Как мне задать количество строк и подсчитать условные результаты?

#sql #snowflake-cloud-data-platform

#sql #snowflake-cloud-data-platform

Вопрос:

Я пытаюсь подсчитать количество условий из заданного числа в 100 результатов.

Пример: из последнего набора 100 действий, сколько было для ‘X’?

Я не совсем уверен, с чего начать.

Я довольно новичок в SQL, и я пробовал внутренние соединения, подзапросы и т. Д., Но, похоже, я просто не могу в этом разобраться. Я чувствую, что это что-то довольно простое.

Спасибо!

Комментарии:

1. Примеры данных и желаемые результаты помогут.

Ответ №1:

Для этого вам просто нужно выполнить sum case оператор, который проверяет значение. Однако, если вы хотите сделать это только для 100 строк, вам нужно будет выполнить этот запрос к a derived table (или обычному табличному выражению, если ваша СУБД поддерживает его), чтобы выполнить это ограничение количества строк.

Вот пример, который должен работать в большинстве СУБД (возможно, вам потребуется заменить TOP на LIMIT , в зависимости от вашей СУБД):

 select
    sum(
        case 
            when (my_val='X') then 
                1
            else 
                0 
        end
    )
from
    (
        select top 100 
            my_val
        from
            my_table
    ) t
  

Комментарии:

1. В Snowflake. вы также можете упростить это с помощью IFF(my_val = 'X', 1, 0)

2. @MarcinZukowski Вам следует подумать о предоставлении ответа, специфичного для Snowflake. У меня нет никакого опыта в этом, поэтому мне неудобно добавлять это к своему ответу.

Ответ №2:

ответ @RToyo охватывает его для любой СУБД.

В Snowflake вы можете немного упростить это, используя IFF :

 select
    sum(IFF(my_val='X', 1, 0))
from
    (
        select top 100 
            my_val
        from
            my_table
    ) t