编写查询以查找从非ED单位撤出的ED访问次数。 如果单位是ED单位,则列dep.ADT_UNIT_TYPE_C列存储1。 假定此查询的目的是NULL值是非ED单位。 以下哪个产生这个数字?
我认为它是A,因为在我看来,这听起来是正确的语法。 COUNT(以THEHEN ELSE END为标准格式的情况) 一个有那个。 B没有THEN吗?所以语法不正确? 请帮助我理解这些选择之间的细微差别。
A。)
COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL OR dep.ADT_UNIT_TYPE_C <> 1 THEN NULL
ELSE 1
END )
B。)
COUNT( CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1
ELSE NULL
END)
C。)
CASE WHEN dep.ADT_UNIT_TYPE_C Is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT (NULL)
ELSE COUNT (1)
END
D。)
CASE WHEN dep.ADT_UNIT_TYPE_C is NULL or dep.ADT_UNIT_TYPE_C <> 1 THEN COUNT(1)
ELSE COUNT(NULL)
END
答案 0 :(得分:1)
您可以计算返回COUNT(*)的记录,并将条件放在where子句中。
如果使用的是Oracle,则可以使用NVL。 下面的示例适用于Oracle,但是如果使用mysql或SQL Server,则可以使用ISNULL函数。
SELECT COUNT(*) FROM dep WHERE NVL(ADT_UNIT_TYPE_C, 0) != 1
但是,您似乎正在将其连接到另一个表,可能是一个访问表。因此,您要计算访问次数。访问可能会存储某种部门ID或将其加入部门的方式。
类似这样的东西:
SELECT COUNT(*) FROM visit v, departments d WHERE v.dep_id = d.dep_id AND NVL(d.ADT_UNIT_TYPE_C, 0) !=1
如果您想要上面显示的整个列表,则要使用分组依据。这将按部门类型显示每次访问的次数。
SELECT COUNT(*) FROM visit v, departments d GROUP BY d.ADT_UNIT_TYPE_C