继续使用Stack Exchange Data Explorer学习sql的精神(参见:
Can we become our own “Northwind” for teaching SQL / databases?),我决定尝试编写一个查询来回答一个简单的问题(关于元):
What % of stackoverflow users have over 10,000 rep?.
这就是我所做的:
SELECT COUNT(*) FROM Users WHERE Users.Reputation >= 10000
结果:
556
SELECT COUNT(*) FROM USERS
结果:
227691
现在,我如何将它们组合成一个查询?这个查询成语叫什么?我需要写什么,所以我可以得到一个像这样的一行三列结果:
556 227691 0,00244190592
解决方法
您可以使用
Common Table Expression (CTE):
WITH c1 AS ( SELECT COUNT(*) AS cnt FROM Users WHERE Users.Reputation >= 10000 ),c2 AS ( SELECT COUNT(*) AS cnt FROM Users ) SELECT c1.cnt,c2.cnt,CAST(c1.cnt AS FLOAT) / c2.cnt FROM c1,c2
原文地址:https://www.jb51.cc/mssql/79618.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。