#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