【发布时间】:2020-05-15 10:10:28
【问题描述】:
我有一个大致如下结构的 SQL 表:
Employee| date | department | Country | Designation
我希望得到具有以下结构的结果:
count_emp_per_department | count_emp_per_country | count_emp_per_designation |
目前我正在使用UNION ALL,它正在构建一个类似的查询:
SELECT emp_ID, NULL, count(1)
FROM employee
GROUP BY country
UNION ALL
SELECT NULL, emp_ID, count(1)
FROM film
GROUP BY designation
这是在 Hive 中执行多个聚合并将所有聚合返回到单个结果集中的最有效方法吗?
如果您有可以优化/提高性能的新方法,请分享。
【问题讨论】:
-
选择 ONE DBMS,并删除不相关的标签。如果这是 MySQL - 指定它的版本。
-
如果没有这个“东西”,每个东西(不完全)的员工数量是没有意义的。
-
@Akina 我标记了 MySQL 以获得更大的影响力,因为 HiveQL 与 MySQL 非常相似。
-
HiveQL 支持 CTE 和 window functions - 使用它们。
-
感谢您的回复,我的第一种方法只是 CTE,您能否分享我如何在我的场景中使用窗口功能,我很想通过一个例子来学习这一点。提前致谢。