当前位置: 首页 > 面试题库 >

如何在一个查询中计算2个不同的数据

厍彭薄
2023-03-14
问题内容

我需要在一个查询中计算两列中某些数据的出现总数。数据库位于SQL Server 2005中。

例如,我有此表:

Person: Id, Name, Age

我需要查询一个结果:
1.名为“约翰”的人数
2.年龄超过30岁的“约翰”的人数。

我可以通过这种方式对子查询进行操作(这只是示例):

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

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

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


问题答案:

使用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


 类似资料:
  • 我想在一个名为的表中计算名为的同一列: 假设我需要在20180201和20180228之间计算“(值的类型=111或222或333)/(值的类型=444)”,我使用SQL查询如下: 我只选择了备注=“111或222或333”,我不知道为什么会出现所有备注(“555和666”),我得到的结果如下: SQL查询正确吗?我确信我的SQL查询有问题。非常感谢您的建议。

  • 问题内容: 有没有一种方法可以查询数据库以找出所有表中有多少行? IE 希望你能指教 问题答案:

  • 问题内容: 我目前有一个表,用于存储大量项目的统计数据,例如视图,下载,购买等。为了对每个项目进行一次操作计数,我可以使用以下查询: 这给了我所有的内容以及他们的看法。然后,我可以将其他变量的“视图”更改为“购买”或“下载”。但是,这意味着对数据库的三个单独的调用。 一口气拿下所有三个都可以吗? 问题答案: 将返回一个表, 其中每个item_id和operation一行一行 ,包含三列:item_

  • 考虑一个用例,我有一个类似 现在我怎么能有 2 种不同类型的案例 用例-1 我如何接受swagger中的类形式的上述查询参数,我知道我们可以在swagger中将其定义为不同的单独参数,如下所示 但是使用这个swagger创建了一个带有字符串或整数参数的rest方法,拥有这么多的多个参数可能不是一个好主意,所以我强烈希望它创建一个如下所示的类,而我的rest是用这个类对象生成的。我如何将这个类应用到

  • 当我通过此查询计算日期中的不同年份时 这给了我一个错误 经过调查,我发现了一个问题:-spring JPA@查询错误,应为CLOSE,在附近找到“(” 是否有任何解决方法可以在没有本机查询的情况下获得不同的年份?