sql - SQL Server 中的计数除以计数(*)

标签 sql sql-server count alias divide

这是我的查询:

SELECT 
    COUNT(*) AS total,
    COUNT(CASE WHEN t.id IS NULL THEN 1 END) AS nb_null,
    COUNT(CASE WHEN t.id IS NOT NULL THEN 1 END) AS nb_not_null
FROM
    table t

是否可以用别名来划分字段? :

SELECT 
    COUNT(*) AS total,
    COUNT(CASE WHEN t.id IS NULL THEN 1 END) / total AS nb_null,
    COUNT(CASE WHEN t.id IS NOT NULL THEN 1 END) AS nb_not_null
FROM
    table t

它在 SQL Server 中对我不起作用,我想知道是否有任何方法可以做到这一点?谢谢

最佳答案

而不是

COUNT(CASE WHEN t.id is null THEN 1 END)/Count(*) 

你可以使用

AVG(CASE WHEN t.id is null THEN 1.0 ELSE 0 END)

关于sql - SQL Server 中的计数除以计数(*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43395827/

相关文章:

mysql - 当不在同一个表的行内时获取结果

mysql - 从每小时总和中获取最大用户分数

使用 SQL Server Management Studio 的 SQL Azure 数据库

sql-server - 如何为每个客户获取一行,包括 SQL 中订单的第一行

arrays - 逐行计算数据框新列中数组的元素

php - 从数据库中查找数据的计数

mysql - 选择内部不同

sql - 为每一行比较 SQL 中的不同列

sql-server - 为什么每次插入临时表一个 I/O?数据库服务器

performance - sybase - count(*) 和 count(1) 之间是否存在任何性能差异