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

SQL计数不存在的项目

崔棋
2023-03-14
问题内容

我有桌子组,

ID  NUMBER
STATUS  VARCHAR2(20 BYTE)

我能够算出以下状态数。

select g.status, count(*) from groups g group by g.status;

STATUS                 COUNT(*)
-------------------- ----------
OK                            2 
NOK                           1

我还有另一种状态,例如“待审核,已拒绝”。但是表中没有项目,但是我希望它们显示为零计数,如下所示。

STATUS                 COUNT(*)
-------------------- ----------
OK                            2 
NOK                           1 
PENDING                       0 
REJECTED                      0

SQL语句将使之成为可能?


问题答案:

试试这个

SELECT A.status, COUNT(DISTINCT G.ID) statusCnt
FROM (SELECT 'OK' status FROM DUAL
      UNION 
      SELECT 'NOK' status FROM DUAL
      UNION 
      SELECT 'PENDING' status FROM DUAL
      UNION 
      SELECT 'REJECTED' status FROM DUAL
     ) AS A 
LEFT JOIN groups G ON A.status = G.STATUS 
GROUP BY A.status;


 类似资料:
  • 问题内容: 为什么不能在SQL中使用?如要计算所有不同的行? 问题答案: 尽管我强烈建议您重新考虑使用的任何查询。在大多数情况下,更合适(更快)。 编辑: 阅读问题注释后,我应该指出,您 绝不 应该要求DBMS做比实际需要做的更多的工作来获得结果。如果您事先知道表中没有任何重复的行,请不要使用。

  • 问题内容: 好的,我试图查看每个供应商提供了多少个产品(“产品”和“供应商”为单独的表格)。我希望将结果与公司名称和公司提供的产品数量一起显示。我不确定该如何设置。 到目前为止,我有: 我不确定如何使每个公司的ProductName计数。如果您能为我提供任何帮助,我将不胜感激。 问题答案: 您所缺少的只是GROUP BY子句: 使用LEFT {OUTER} JOIN意味着如果某些供应商不提供任何产

  • 问题内容: 我有一个数据集,,和。每个资源可以被多个项目利用。 我想统计每个季度使用资源的项目数量。 因此,如果项目在特定年份的Q1开始并在当年的Q3结束,而project2在Q2开始并在Q3结束,那么我想为Q2计数2个项目,因为在Q1期间,project1和project2都处于活动状态。 这是我的数据集: 这是我要寻找的结果: 问题答案: 使用理货单: 使用from的日期,生成所有季度及其开始

  • 我有一个我认为是完全琐碎的查询-插入值到一个表中,如果一个值与匹配的ID不存在: 我在where语句周围得到一个错误。为什么?我如何实现我的目标?

  • 问题内容: 我有一张表,我需要在一个语句中计算两个具有不同条件的聚合函数。我怎样才能做到这一点? 伪代码如下: 问题答案: 这与tombom的答案相同,但是具有SQL Server语法:

  • 问题内容: 我有一个Map(String,String),我想找到一个条目和Map的内存大小。我读的地方,仪表可能是有用的(仪器)。有人有主意吗? 提前致谢。 问题答案: 对于64位JVM,空白实例应为24字节,对于32位JVM,空白实例应为12字节。这是我发现有用的@PeterLawrey的技术,基于MemoryUsageExamplesTest: