HiveSql
三张表
tmp1字段:员工id,员工所属机构id
tmp2字段:员工所属机构id,父1级机构id,父2级机构id
问:如何使用相对简便的sql,统计出各个级别机构的员工数量,我只想到了分别查询然后union
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;
不知道你这个问题是否已经解决, 如果还没有解决的话:根据提供的参考资料和表格结构,可以使用以下步骤来使用HiveSQL统计不同级别机构的员工数量:
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);
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;
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使用简便的方式统计不同级别机构的员工数量。