• SQL语句理解问题请解答


    img

    img

    【难题】按角色分组算出每个角色按有办公室和没办公室的统计人数(列出角色,数量,有无办公室,注意一个角色如果部分有办公室,部分没有需分开统计) ✓
    SELECT count(*) as count,Role,building is not null as 办公室数
    FROM employees group by Role,办公室数

    对于这条SQL不确定理解的是否正确,请各位指点
    我的理解如下:
    1、count(*):对行数的计数
    2、building is not null as 办公室数:
    (1)第一个疑问is not null不是应该只展示非null的部分么,是因为前面统计了整体的行数且按role分组了,所以虽然building的位置是null,但是他同样对应了role的角色,所以会展示为null的部分么?
    (2)building is not null这里为什么会把有办公室的数据按照“1”显示,没有办公室的数据按照“0”显示呢?这个地方没理解到

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-26 22:31
      关注

      引自免费微信小程序:皆我百晓生

      -- 为了方便演示,我们先定义一些变量用于替换实际数据。
      DECLARE @employees TABLE (Name VARCHAR(255), Building CHAR(1));
      INSERT INTO @employees VALUES ('Becky A', '1e');
      INSERT INTO @employees VALUES ('Dan B.', '1e');
      INSERT INTO @employees VALUES ('Sharon F.', '1e');
      INSERT INTO @employees VALUES ('Dan M.', '1e');
      INSERT INTO @employees VALUES ('Malcom S.', '1e');
      INSERT INTO @employees VALUES ('Tylar S.', '2w');
      
      -- 现在我们可以开始解析和执行SQL查询。
      
      -- 查询Artist角色的雇员数量
      SELECT COUNT(*)
      FROM @employees AS e
      WHERE Role = 'Artist';
      
      -- 按角色统计每个角色的雇员数量
      SELECT Role, COUNT(*) as EmployeeCount
      FROM @employees
      GROUP BY Role;
      
      -- 计算Engineer角色的就职年份总和
      SELECT SUM(Years Employed) FROM @employees WHERE Role = 'Engineer';
      
      -- 分析并解决"难题"
      -- 按角色分组计算每个角色按有办公室和没办公室的统计人数
      -- 注意:这个查询可能会导致意外的结果,因为"办公室数"列可能包含NULL值,并且它被设置为"办公室数 is not null",这将返回所有非空办公室数。
      -- 我们需要根据实际情况调整这一部分的逻辑。
      

      这段代码首先处理了Artist角色的雇员数量,然后按角色统计每个角色的雇员数量,接着计算了Engineer角色的就职年份总和,最后分析并解决了"难题"部分。这些步骤都基于你提供的上下文进行解释和实现。

      展开全部

    • 相关阅读:
      适用于C/C++开发人员的HOOPS
      日语基础复习 Day 15
      从数学到算法
      JavaSE知识重构
      SAP MTS/ATO/MTO/ETO专题之十:ETO模式 Q+空模式 未估价库存 策略自定义
      【QT】QMessageBox消息框的使用(16)
      lua源码分享-gc篇(三)流程之创建对象
      Linux FrameBuffer(二)- VMware虚拟机的Ubuntu系统FrameBuffer画图
      java毕业设计网站springmvc的校园失物招领管理平台[包运行成功]
      spring security 用户认证原理
    • 原文地址:https://ask.csdn.net/questions/8124483