在 SQL Server 中除以 count(\*)

新手上路,请多包涵

这是我的查询:

 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 中对我不起作用,我想知道是否有任何方法可以做到这一点?谢谢

原文由 Vincent Ducroquet 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

代替

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

您可以使用

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

原文由 Martin Smith 发布,翻译遵循 CC BY-SA 3.0 许可协议

我需要用任意数量的特征(不仅仅是空与非空)来解决类似的问题,我还希望它们转换为百分比。这可能对您或有类似问题的其他人有所帮助:

 WITH counts AS
  (SELECT [feature],
  COUNT(*) AS cnt
  FROM [your_table]
  GROUP BY [feature])
SELECT [feature], CAST(100 * num AS DOUBLE) / (SELECT SUM(num) FROM counts)
  AS pct
FROM counts
ORDER BY pct DESC

原文由 mr_snuffles 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏