计算值不丢失的位置

Bea*_*nie 3 sql sas

我想计算不丢失值的列中日期的出现次数.因此,例如,我想计算汽车维修的次数,而不是包括没有服务日期的空值.

我尝试了简单的计数功能,但它带来了所有记录.我想过使用'case',但我不确定语法.我正在使用SAS Enterprise Guide.

样品日期

id    car     service_Date
1     honda   01/01/2005
2     honda   01/01/2006
3     honda   
4     honda   01/01/2008
5     honda   
6     honda   01/01/2010
Run Code Online (Sandbox Code Playgroud)

结果:我想只有4作为答案,所以它不计算空值.

PROC SQL;
CREATE TABLE WORK.QUERY_FOR_CARS AS 
SELECT 
t1.CAR,
t1.ID  
/* SERVICE_DATE */
(count (case when t1.S_DATE is not null then 0 end)) AS SERVICE_DATE
FROM WORK.QUERY_FOR_CAR_SERVICE
GROUP BY t1.S_DATE;
QUIT;
Run Code Online (Sandbox Code Playgroud)

我添加了我正在使用的代码.它给出了日期的计数,但也包括日期值为空的位置.

Bel*_*Bob 6

给定一个名为CARS的SAS数据集,其中包含示例中的变量,您可以在SQL中以两种不同的方式找到具有非缺失值service_date的观察数:

proc sql;

   select count(service_date) as num_not_missing
   from cars;

   select count(*) as num_not_missing
   from cars
   where service_date is not null;

quit;
Run Code Online (Sandbox Code Playgroud)

第一个示例指定count函数中的service_date变量,该变量将忽略缺失值.第二个在应用where子句后计算所有行.两者表现相同.