初学者SQL问题:具有多个COUNT(*)结果的算术

继续使用Stack Exchange Data Explorer学习SQL的精神(参见: Can we become our own “Northwind” for teaching SQL / databases?),我决定尝试编写一个查询来回答一个简单的问题(关于元): What % of stackoverflow users have over 10,000 rep?. 这就是

继续使用Stack Exchange Data Explorer学习SQL的精神(参见:
Can we become our own “Northwind” for teaching SQL / databases?),我决定尝试编写一个查询来回答一个简单的问题(关于元):
What % of stackoverflow users have over 10,000 rep?.

这就是我所做的:

Query#1

SELECT COUNT(*)
FROM Users
WHERE
  Users.Reputation >= 10000

结果:

556

Query#2

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

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐