条件 CASE WHEN select 雪花 SQL
Conditional CASE WHEN select snowflake SQL
我卡在条件雪花select sql 上了。当 ID 具有相应的分类值时,我正在尝试对其进行计数。我会很感激一些帮助。
谢谢
SELECT
YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT(CASE WHEN ID THEN CATEGORY = 'A')
from table
group by week, year;
这是一种方法:
SELECT YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
SUM(CASE WHEN CATEGORY = 'A' THEN 1 ELSE 0 END) as num_a
FROM table
GROUP BY week, year;
COUNT() 计算不为空的行数。
如果你想要当 ID 不为 null AND CATEGORY = 'A' then
COUNT(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN TRUE ELSE NULL END)
会给你那个,或者你可以像 Gordon 的回答那样使用 SUM
SUM(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN 1 ELSE 0 END)
或者您可以使用雪花 IFF 作为同一事物的更短形式,我就是这样做的
SUM( IFF( ID IS NOT NULL AND CATEGORY = 'A', 1, 0))
雪花支持COUNT_IF:
Returns the number of records that satisfy a condition.
Aggregate function
COUNT_IF( <condition> )
SELECT YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT_IF(CATEGORY = 'A') AS num_a
FROM tab
GROUP BY week, year;
您应该/可以使用 IFF(),因为当存在多个条件时 case when 更合适。
SELECT
YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT(IFF(CATEGORY = 'A',ID,NULL)) as count
from table
group by week, year;
我卡在条件雪花select sql 上了。当 ID 具有相应的分类值时,我正在尝试对其进行计数。我会很感激一些帮助。
谢谢
SELECT
YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT(CASE WHEN ID THEN CATEGORY = 'A')
from table
group by week, year;
这是一种方法:
SELECT YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
SUM(CASE WHEN CATEGORY = 'A' THEN 1 ELSE 0 END) as num_a
FROM table
GROUP BY week, year;
COUNT() 计算不为空的行数。 如果你想要当 ID 不为 null AND CATEGORY = 'A' then
COUNT(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN TRUE ELSE NULL END)
会给你那个,或者你可以像 Gordon 的回答那样使用 SUM
SUM(CASE WHEN ID IS NOT NULL AND CATEGORY = 'A' THEN 1 ELSE 0 END)
或者您可以使用雪花 IFF 作为同一事物的更短形式,我就是这样做的
SUM( IFF( ID IS NOT NULL AND CATEGORY = 'A', 1, 0))
雪花支持COUNT_IF:
Returns the number of records that satisfy a condition.
Aggregate function
COUNT_IF( <condition> )
SELECT YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT_IF(CATEGORY = 'A') AS num_a
FROM tab
GROUP BY week, year;
您应该/可以使用 IFF(),因为当存在多个条件时 case when 更合适。
SELECT
YEAR(DATETIME) AS YEAR,
WEEKOVERYEAR(DATETIME) AS WEEK,
COUNT(IFF(CATEGORY = 'A',ID,NULL)) as count
from table
group by week, year;