精华内容
下载资源
问答
  • 相同点:它们都以一张部门表(或类别表),其它表都有部门编号DepartmentID(类别编号) 案例一:一张表 select c.DepartmentID,c.DepartmentName, t.Num AS '人员数量' from T_Department as cleft join (select ...

     

    相同点:它们都以一张部门表(或类别表),其它表都有部门编号DepartmentID(类别编号)

    案例一:一张表

     select c.DepartmentID,c.DepartmentName, t.Num AS '人员数量' from T_Department as c 
    left join (select DepartmentID,COUNT(*) AS Num from T_User   group by DepartmentID) as t on c.DepartmentID= t.DepartmentID

    核心思想就是: 拆分

    1将人员表按部门编号统计数量: ( select DepartmentID,COUNT(*) AS Num from T_User   group by CompanyID) 得到t: 部门编号、部门人员数量;

    2将 部门表与 t ,根据部门编号联表左连接,得到 :部门名称、部门人员数量

     

    案例二:多张表

    统计提交的 调查人员、设备、规范、数据来源规范 表的数量

     

    select c.CompanyID,c.CompanyName, t1.Num AS '调查人员数量',t2.Num AS '设备数量',t.Num AS '规范数量',t3.Num AS '数据来源规范数量' from T_Company as c
    left join (select CompanyID,COUNT(*) AS Num from T_Standard as s where s.HasSubmitted=1 group by CompanyID) as t on c.CompanyID= t.CompanyID
    left join (select CompanyID,COUNT(*) AS Num from T_Investigator as s where s.HasSubmitted=1 group by CompanyID) as t1 on c.CompanyID= t1.CompanyID
    left join (select CompanyID,COUNT(*) AS Num from T_Machine as s where s.HasSubmitted=1 group by CompanyID) as t2 on c.CompanyID= t2.CompanyID
    left join (select CompanyID,COUNT(*) AS Num from T_DataSource as s where s.HasSubmitted=1 group by CompanyID) as t3 on c.CompanyID= t3.CompanyID
    order by c.CompanyID

     

    最后赋值粘贴到Excel,在Excel搞个合计:

     

    转载于:https://www.cnblogs.com/hao-1234-1234/p/10951418.html

    展开全文
  • 复杂sql语句:按部门统计人数

    千次阅读 2019-03-16 19:54:00
    复杂的sql语句,按部门统计人数: --按部门统计人数 SELECT o.OUGUID AS OUGUID, o.OUNAME AS OUNAME, IFNULL(COUNT(DISTINCT o.USERGUID), 0) AS USERNUM, SUM(CASE WHEN IFNULL(q.CALLTIME, 0) != 0 THEN 1 ...

    复杂的sql语句,按部门统计人数:

    --按部门统计人数
    SELECT o.OUGUID AS OUGUID, o.OUNAME AS OUNAME,
    IFNULL(COUNT(DISTINCT o.USERGUID), 0) AS USERNUM,
    SUM(CASE WHEN IFNULL(q.CALLTIME, 0) != 0 THEN 1 ELSE 0 END) AS CallNoCount, 
    SUM(CASE WHEN q.ROW_ID = '1' THEN 1 ELSE 0 END) AS QuestionCount,
    SUM(CASE WHEN q.`STATUS` = '3' THEN 1 ELSE 0 END) AS PassCount,
    SUM(CASE WHEN q.`STATUS` = '1' OR q.`STATUS` = '2' THEN 1 ELSE 0 END) AS BanjianCount
    FROM 
        (SELECT ROW_ID,`STATUS`,handleuserguid,CALLTIME FROM audit_queue UNION ALL
            SELECT ROW_ID,`STATUS`,handleuserguid,CALLTIME FROM audit_queue_history) q 
    LEFT JOIN (SELECT o.OUNAME,o.OUGUID,u.USERGUID, u.DISPLAYNAME FROM frame_user u 
                            LEFT JOIN frame_ou o ON u.OUGUID = o.OUGUID) o 
        ON q.handleuserguid = o.USERGUID 
    WHERE q.CALLTIME BETWEEN '2018-09-30 00:00:00' AND '2018-10-30 23:59:59'
    GROUP BY o.OUGUID;
    其中类似 SUM(CASE WHEN q.ROW_ID = '1' THEN 1 ELSE 0 END) AS QuestionCount 为按一定的条件计数;

    转载于:https://www.cnblogs.com/wmqiang/p/10544042.html

    展开全文
  • (图一是部门,图二是部门下的人员,判断一个人是不是在一个部门要用apartment和unit_name双主键来判断) 下方是两个表结构: personUnit是部门表 ``` CREATE TABLE `person_unit` ( `id` bigint(20) NOT ...
  • <p>--三张表:人员表、岗位表、部门表,人员表中的 departmentid = HrmDepartment.ID ,jobtitle = hrmjobtitles.ID; <p>select departmentid AS '所属部门',loginid ,jobtitle,hrmjobtitles.id As'...
  • sql统计部门的的男女员工数

    千次阅读 2019-11-25 22:39:50
    统计部门的的男女员工数 SELECT d.dname, SUM(CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END) 女, SUM(CASE WHEN sex = ‘男’ THEN 1 ELSE 0 END) 男 FROM ...

    统计各部门的的男女员工数

    SELECT d.dname,
    SUM(CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END) 女,
    SUM(CASE WHEN sex = ‘男’ THEN 1 ELSE 0 END) 男 FROM com c LEFT JOIN dept d ON d.id = c.deptId GROUP BY deptId

    还有一个方法
    SELECT d.id,d.dname,c.sex,COUNT(*) FROM com c ,dept d WHERE d.id=c.deptId GROUP BY c.deptId , c.sex

    另外大家可以注意一下
    CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END
    CASE 课程 when ‘语文’ then 分数 else 0 end
    这两中不同写法
    ————————————————
    版权声明:本文为CSDN博主「qq_38490173」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38490173/article/details/102583682

    展开全文
  • 1,SELECT ,COUNT() FROM dept d LEFT JOIN emp e ON d.deptno=e.deptno WHERE e.sal&...查询部门工资低于4000的人数 2, 表数据 create table tb(姓名 varchar(10),课程 varchar(10),分数 int) insert into tb val...

    在这里插入图片描述
    切记where后面不能跟直接跟聚合函数
    1,SELECT ,COUNT() FROM dept d LEFT JOIN emp e ON d.deptno=e.deptno WHERE e.sal<4000 GROUP BY d.deptno
    查询部门工资低于4000的人数
    2,
    表数据
    create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
    insert into tb values(‘张三’,‘语文’,74)
    insert into tb values(‘张三’,‘数学’,83)
    insert into tb values(‘张三’,‘物理’,93)
    insert into tb values(‘李四’,‘语文’,74)
    insert into tb values(‘李四’,‘数学’,84)
    在这里插入图片描述
    利用 if语句进行行转列
    SELECT 姓名,SUM(IF(课程=“语文”,分数,0)) AS 语文,
    SUM(IF(课程=“数学”,分数,0)) AS 数学,
    SUM(IF(课程=“物理”,分数,0)) AS 物理 FROM tb GROUP BY 姓名

    – 使用case when (SQL2000以上)
    select 姓名,
    max(case 课程 when ‘语文’ then 分数 else 0 end)语文,
    max(case 课程 when '数学’then 分数 else 0 end)数学,
    max(case 课程 when '物理’then 分数 else 0 end)物理
    from tb
    group by 姓名

    员工表,查询入职满5年的员工
    员工表,查询入职满5年的员工在这里插入图片描述
    部门表
    在这里插入图片描述
    SELECT * FROM COM WHERE entry<=DATE_SUB(SYSDATE(),INTERVAL 5 YEAR);

    统计各部门的的男女员工数

    SELECT d.dname,
    SUM(CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END) 女,
    SUM(CASE WHEN sex = ‘男’ THEN 1 ELSE 0 END) 男 FROM com c LEFT JOIN dept d ON d.id = c.deptId GROUP BY deptId

    还有一个方法
    SELECT d.id,d.dname,c.sex,COUNT(*) FROM com c ,dept d WHERE d.id=c.deptId GROUP BY c.deptId , c.sex
    在这里插入图片描述
    另外大家可以注意一下
    CASE WHEN sex = ‘女’ THEN 1 ELSE 0 END
    CASE 课程 when ‘语文’ then 分数 else 0 end
    这两中不同写法

    计算每门成绩不低于60分的学生姓名
    表数据
    在这里插入图片描述

    方法1:SELECT DISTINCT(NAME) FROM sc WHERE id NOT IN (SELECT DISTINCT(id) FROM sc WHERE score <60)
    方法2
    SELECT NAME FROM sc GROUP BY NAME HAVING MIN(score)>60
    查询结果
    在这里插入图片描述

    根据出生日期计算年龄
    SELECT *,TIMESTAMPDIFF(YEAR,entry,CURDATE())AS 年龄 FROM com
    在这里插入图片描述
    这是我找了好多根据出生日期计算年龄的sql,这个无疑是最优秀的一个,但是美中不足的是 当我把出生日期写成2018-11-25 11:26:51的时候计算的年龄为0,因为当前时间是2019-11-25 22:21:51这样按实际情况应该刚好一岁的,不过,把出生日期改为2018-11-24 11:26:51就是1了 也就是说有一天和实际情况不符合。如果您有更优的方案,希望不吝赐教,谢谢。

    结束语:写的可能有点乱,请见谅。各位有不明白的地方可以给我留言。我一定会即使回复的。

    展开全文
  • 目前只找到了子部门人数统计,父部门人数没有将子部门人数统计上去 意思就是没有将子部门人数递归上去</p>
  • (1)查询至少有一员工的部门编号。 select DEPARTMENT_ID from EMPLOYEES group by DEPARTMENT_ID having count(*)>0; (2)查询各个部门中不同职位的最高工资。 select DEPARTMENT_ID ,JOB_ID,max(SALARY) ...
  • leetcode580. 统计各专业学生人数SQL

    千次阅读 热门讨论 2020-02-19 11:33:57
    写一个查询语句,查询department表中每个专业的学生人数 (即使没有学生的专业也需列出)。 将你的查询结果按照学生人数降序排列。 如果有两个或两个以上专业有相同的学生数目,将这些部门按照部门名字的字典序从小...
  • tab_salary表结构: name  varchar(50) departid number salary binary_float ...SQL实现: select A.* from tab_salary A inner join (select max(salary) as salary,departid as departid
  • 给王五增加100工资 查询人数超过两人的部门
  • select sClass 班级,count(*) 班级学生总人数, sum(case when sGender=0 then 1 else 0 end) 该班级女生人数, sum(case when sGender=0 then 1 else 0 end)*1.0/count(*) 该班级女生所占比例, sum(case when sGender...
  • 580. 统计各专业学生人数SQL

    千次阅读 2021-02-23 15:55:52
    写一个查询语句,查询department表中每个专业的学生人数 (即使没有学生的专业也需列出)。 将你的查询结果按照学生人数降序排列。 如果有两个或两个以上专业有相同的学生数目,将这些部门按照部门名字的字典序从小...
  • 经典面试题目:有一个学生记录的表student,形式如下: name class sex 1 a 1(男) 2 b 2(女) 3 c 1 4 a 1 5 a 2 6 a 1 …… 现要统计每个班级的男女人数,结果如下: ...
  • select sClass 班级,count(*) 班级学生总人数,sum(case when sGender=0 then 1 else 0 end) 女生人数,sum(case when sGender=0 then 1 else 0 end)*1.0/count(*)女生所占比例,sum(case when sGender=1 then 1 else 0...
  • <p style="text-align:center"><img alt="" height="864" src="https://img-ask.csdnimg.cn/upload/1611227113211.jpg" width="250" /></p> ...每个月离职的人数,以及环比增长率。这是部分数据。</p>
  • select sClass 班级,count(*) 班级学生总人数, sum(case when sGender=0 then 1 else 0 end) 女生人数, sum(case when sGender=0 then 1 else 0 end)*1.0/count(*)女生所占比例, sum(case when sGender=1 then 1 ...
  • !... ...能不能用一句sql将各个学历的总人数查出来? 就像这样。 列:学历 全日制人数 在职人数 数据:1(博士) ?? ?? 2 (硕士) ?? ?? 3 (本科) ?? ?? 4 (专科) ?? ??
  • --用PL/SQL语言编写一程序,实现按部门分段 --(6000以上、6000-3000,3000元以下)统计各个 --工资段的职工人数、以及各部门的工资总额(工资总额中不包括奖金) --创建结果表--存储结果数据 create table msg (deptno ...
  • 小弟最近在做个小项目,有三张表,部门表,办公室表,人员表,统计表,结构是部门下有多个办公室,每个办公室有自己的成员,我想实现个触发器,统计每个部门人数,比如男的有多少,女的有多少,然后保存在统计表中...
  • PL/SQL——统计每年入职的员工人数

    千次阅读 2018-08-15 23:23:08
    /* --可以得到员工的入职日期 select hiredate from emp;...需要一集合存放入职年份 à光标à循环à退出条件ànotfound 变量: --每年入职的员工人数 count80 number:=0; count81 number:=0; ...
  • 注意此题的主表是部门表,应放在联结的第一位置 select d.dept_no,de.dept_name,count(s.emp_no) as sum from dept_emp as d left join salaries as s on s.emp_no=d.emp_no left join departments as de on d....
  • 现有需求,统计emp表各部门(deptno)下面的员工,员工姓名已以逗号分隔。如下: Mysql实现方法: SELECT t.deptno ,GROUP_CONCAT(t.ename)NAME FROM emp t GROUP BY t.deptno ; Oracle实现方法: 方法1: ...
  • 但是我想按人名来统计每个部门人数,希望得到的结果是 chr_cl1 人数 A1供应部 2 C1系统支持 1 试了好几次,都试不出来,哪位兄弟帮帮忙啊????????????? sql语句如下: select t.chr_cl1,t.chr_cl2 ...
  • 统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum CREATE TABLE `departments` ( `dept_no` char(4) NOT NULL, `dept_name` varchar(40) NOT NULL, ...
  • SQL统计函数及分组操作

    万次阅读 2017-04-20 08:08:09
    1.多表查询的操作、限制、笛卡尔积的问题 2.统计函数及分组统计的操作 ...6.完成一套复杂查询的应用案例统计函数及分组统计的操作统计函数统计函数主要有: COUNT():用于统计数据数量 SUM():用于统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,381
精华内容 3,352
关键字:

sql统计每个部门人数