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

如何通过一个SQL查询获得多个计数?

齐甫
2023-03-14
问题内容

我想知道如何编写此查询。

我知道这个实际的语法是虚假的,但是它将帮助您理解我想要的。我需要这种格式,因为它是更大查询的一部分。

SELECT distributor_id, 
COUNT(*) AS TOTAL, 
COUNT(*) WHERE level = 'exec', 
COUNT(*) WHERE level = 'personal'

我需要所有这些都在一个查询中返回。

此外,它必须排成一排,因此以下内容将不起作用:

'SELECT distributor_id, COUNT(*)
GROUP BY distributor_id'

问题答案:

您可以将CASE语句与聚合函数一起使用。这与PIVOT某些RDBMS中的函数基本相同:

SELECT distributor_id,
    count(*) AS total,
    sum(case when level = 'exec' then 1 else 0 end) AS ExecCount,
    sum(case when level = 'personal' then 1 else 0 end) AS PersonalCount
FROM yourtable
GROUP BY distributor_id


 类似资料:
  • 我想知道如何编写这个查询。 我知道这个实际的语法是假的,但它会帮助你理解我想要什么。我需要它的这种格式,因为它是一个大得多的查询的一部分。 我需要这所有返回在一个查询。 此外,它需要在一行中,因此以下操作将不起作用:

  • 我有以下表格: 表名称 -----| 表字段 图书--------------------图书id、图书名称 作者 ---------- | author_id、author_name 图书作者-作者id,图书id 用户------------------用户id、用户名 注释----------注释id,注释 评论|用户|评论| id、用户id、图书id、日期 我需要显示书名,它的作者,以及为这

  • 我想知道是否有可能在一次往返(网络呼叫)到Firestore数据库的过程中,通过ID列表获取多个文档。

  • 问题内容: 我想知道每个团队中有10%以上的用户百分比。当前,这需要两个查询: 我可以合而为一吗,所以得到这样的结果: 问题答案: 您可以使用来检查特定行的数量是否大于10,并相应地进行计数(使用)。 在MySQL中,我们可以进一步缩短它,因为函数可以简单地将条件运算符/函数的结果强制转换为0/1(分别为false / true):

  • 问题内容: 我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询: 我知道的唯一方法是 但我想要一些更简单的方法。 问题答案: 我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。 我发现使用此方法的速度大约是的10倍。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟: 使用此方法需要2分钟: