hivesql统计员工数量

HiveSql
三张表
tmp1字段:员工id,员工所属机构id
tmp2字段:员工所属机构id,父1级机构id,父2级机构id
问:如何使用相对简便的sql,统计出各个级别机构的员工数量,我只想到了分别查询然后union

img


SELECT t2.父1级机构id AS 机构级别, COUNT(t1.员工id) AS 员工数量
FROM tmp1 t1
JOIN tmp2 t2 ON t1.员工所属机构id = t2.员工所属机构id
GROUP BY t2.父1级机构id;

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    根据提供的参考资料和表格结构,可以使用以下步骤来使用HiveSQL统计不同级别机构的员工数量:

    1. 创建表tmp1和tmp2,并插入数据。
    CREATE TABLE tmp1 (
      employee_id INT,
      organization_id INT
    );
    
    INSERT INTO tmp1 VALUES
    (1, 100),
    (2, 200),
    (3, 200),
    (4, 300),
    (5, 300),
    (6, 300),
    (7, 400),
    (8, 400),
    (9, 400);
    
    CREATE TABLE tmp2 (
      organization_id INT,
      parent1_id INT,
      parent2_id INT
    );
    
    INSERT INTO tmp2 VALUES
    (100, 10, 1),
    (200, 20, 2),
    (300, 30, 3),
    (400, 40, 4);
    
    1. 使用JOIN操作将两个表进行关联,获取每个员工所属的机构以及父级机构的id。
    SELECT t1.employee_id, t1.organization_id, t2.parent1_id, t2.parent2_id
    FROM tmp1 t1
    INNER JOIN tmp2 t2 ON t1.organization_id = t2.organization_id;
    
    1. 使用GROUP BY和COUNT函数对机构id进行统计,得到不同级别机构的员工数量。
    SELECT organization_id, COUNT(*) AS employee_count
    FROM (
      SELECT t1.employee_id, t1.organization_id, t2.parent1_id, t2.parent2_id
      FROM tmp1 t1
      INNER JOIN tmp2 t2 ON t1.organization_id = t2.organization_id
    ) subquery
    GROUP BY organization_id;
    

    这样,就能通过HiveSQL使用简便的方式统计不同级别机构的员工数量。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^