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

sql在一个查询中获取总数和过滤计数

嵇丰
2023-03-14
问题内容

我想知道每个团队中有10%以上的用户百分比。当前,这需要两个查询:

SELECT COUNT(*) as winners, team FROM users WHERE points > 10 GROUP BY team

SELECT COUNT(*) as total, team FROM users GROUP BY team

我可以合而为一吗,所以得到这样的结果:

winners, total, team
5, 16, A

问题答案:

您可以使用Case .. When来检查points特定行的数量是否大于10,并相应地进行计数(使用Sum())。

SELECT COUNT(*) as total, 
       SUM(CASE WHEN points > 10 THEN 1 ELSE 0 END) AS winners, 
       team 
FROM users 
GROUP BY team

在MySQL中,我们可以进一步缩短它,因为Sum()函数可以简单地将条件运算符/函数的结果强制转换为0/1(分别为false / true):

SELECT COUNT(*) as total, 
       SUM(points > 10) AS winners, 
       team 
FROM users 
GROUP BY team


 类似资料:
  • 问题内容: 是否有可能获得总表,并在相同的查询。像这样的东西 问题答案: 您可以随时尝试执行以下操作: 该子句将为您提供查询中所有行的计数。

  • 问题内容: 我想知道如何编写此查询。 我知道这个实际的语法是虚假的,但是它将帮助您理解我想要的。我需要这种格式,因为它是更大查询的一部分。 我需要所有这些都在一个查询中返回。 此外,它必须排成一排,因此以下内容将不起作用: 问题答案: 您可以将语句与聚合函数一起使用。这与某些RDBMS中的函数基本相同:

  • 我有用于分页的逻辑,它工作得非常好。这个问题是为了优化/改进我是如何做某事的。 我正在运行两个查询以获得结果集。第一个查询按限制和偏移量获取所有项,第二个查询获取总计数。我需要这个总数来计算表示层中的分页链接。 我想避免运行两个查询,如果可能的话,将它们合并成一个。 例如,如果数据库中有100项,并且我运行下面的查询时为1,为20,那么查询应该返回20个结果和100个计数。我目前在两个单独的查询中

  • 问题内容: 我有一个带有许多字段的表。我正在尝试在asp.net中创建搜索过滤器,以便用户可以按一个或多个字段进行搜索。所以基本上我想创建一个包含4个参数的存储过程,如果它不为null,它将把参数附加到WHERE子句中。 TableExample有4列,Col1 Col2 Col3 Col4 我希望有一种方法可以用一个存储过程完成此操作,而不必为每种可能的组合创建一个。 我正在尝试类似的方法,虽然

  • 问题内容: 我有一个简单的MySQL表,其中包含类别列表,级别由parent_id确定: 我正在尝试进行面包屑跟踪。因此,我有孩子的“身份证”,我想让所有可用的父母(重复链,直到我们达到0“家”)。可能有任意数量或子行达到无限深度。 目前,我正在为每个父母使用SQL调用,这很麻烦。SQL中有一种方法可以对一个查询执行全部操作吗? 问题答案: 从这里改编: 该行是当前页面的页码。结果如下:

  • 我想在一个帖子查询中返回每个帖子的元值总数。 因此,例如,我查询以获取具有自定义文章类型的参数的文章,并且作者是当前作者。这一部分很容易——返回实际的帖子,也可以统计帖子。但是我想从查询中的每个帖子中计算一个元值,并返回一个总数。meta值是一个统计该帖子被偏爱多少次的值。元键是“simplefavorites_count”,我在这里使用这个插件作为参考: https://favoritepost