gpt4 book ai didi

sql - 如何在一个查询中统计2个不同的数据

转载 作者:行者123 更新时间:2023-12-02 17:03:41 28 4
gpt4 key购买 nike

我需要计算一个查询中两列中某些数据出现次数的总和。 DB 采用 SQL Server 2005。

例如我有这张表:

Person: Id, Name, Age

我需要在一个查询中获取这些结果:
1. 名为“John”的人数
2. 年龄大于30岁的‘John’计数。

我可以通过这种方式使用子查询来做到这一点(这只是示例):

SELECT (SELECT COUNT(Id) FROM Persons WHERE Name = 'John'), 
(SELECT COUNT (Id) FROM Persons WHERE Name = 'John' AND age > 30)
FROM Persons

但这非常慢,我正在寻找更快的方法。

我找到了这个solution对于MySQL(它几乎解决了我的问题,但它不适用于SQL Server)。

您是否知道在一个查询中计算少量计数比使用子查询更好的方法?

最佳答案

使用 CASE 语句可以让您在单个查询中计算您想要的任何内容:

SELECT
SUM(CASE WHEN Persons.Name = 'John' THEN 1 ELSE 0 END) AS JohnCount,
SUM(CASE WHEN Persons.Name = 'John' AND Persons.Age > 30 THEN 1 ELSE 0 END) AS OldJohnsCount,
COUNT(*) AS AllPersonsCount
FROM Persons

关于sql - 如何在一个查询中统计2个不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525407/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com