1

目前我有这个

SELECT
    COUNT (enrollment_id) AS enrollments,
    COUNT (result) AS 
    MAX (result) AS highest_result,
    AVG (result) AS average_result,
    MIN (period_code) AS earliest_enrollment    
FROM 
    enrollment
WHERE
result IS NULL  

我想要的是总的注册人数,这COUNT(enrollment_id)是为了什么。然后我想计算NULL结果列中的值的数量以获得unfinalised_enrollments.

WHERE底部的子句会影响SELECT使用结果列的其他语句吗?如果是这样,我该怎么做才能只NULL计算结果列中值的数量并将其显示在名为unfinalised_enrollment.

提前致谢。

4

3 回答 3

2

您可以使用SUM代替COUNT

SELECT
    COUNT (enrollment_id) AS enrollments,
    SUM (CASE WHEN result IS NULL THEN 1 ELSE 0 END) AS null_results,
    MAX (result) AS highest_result,
    AVG (result) AS average_result,
    MIN (period_code) AS earliest_enrollment    
FROM enrollment    
于 2012-06-02T12:18:59.790 回答
0

这应该完成您正在寻找的东西:

SELECT
    COUNT (enrollment_id) AS enrollments,
    ( SELECT COUNT (result) FROM enrollment WHERE result IS NULL ) AS unfinalised_enrollment,
    MAX (result) AS highest_result,
    AVG (result) AS average_result,
    MIN (period_code) AS earliest_enrollment    
FROM 
    enrollment;
于 2012-06-02T12:29:32.370 回答
0

你可以使用:

SELECT
    COUNT (enrollment_id) AS enrollments,
    Count(*) - Count(result) AS null_results,
    MAX (result) AS highest_result,
    AVG (result) AS average_result,
    MIN (period_code) AS earliest_enrollment    
FROM enrollment   

Count(*)将计算总行数,Count(result)enter code here将计算结果不为空的总行数

于 2012-06-02T12:37:02.993 回答