【发布时间】:2021-07-07 13:15:48
【问题描述】:
我在 HIVE 上有一个类似的数据库。
+--------+------------------+---------+
| rating | date_upd | version |
+--------+------------------+---------+
| 3 | 2021-07-01 12:13 | 2.1.9 |
| 5 | 2021-07-01 10:39 | 2.2.6 |
| 4 | 2021-07-02 10:24 | 2.2.7 |
| 5 | 2021-07-02 05:37 | 3.2.4 |
| 1 | 2021-07-02 21:40 | 3.2.5 |
我需要在另一个表中发送两个 SELECT 的结果。如何使用 HiveQL 将这两者合并为一个?
SELECT substr('date_upd',1,10) as 'day',
count(*) cnt
FROM tbl_one
GROUP BY
substr(date_upd,1,10);
SELECT substr('date_upd',1,7) as 'month',
count(*) cnt
FROM table_name
GROUP BY
substr('date_upd',1,7);
当我这样做时,它只返回“日”值而不是“月”值。
SELECT
substr('date_upd',1,7) as 'month',
count(*) cnt_month,
substr('date_upd',1,10) as 'day',
count(*) cnt_day
FROM table_name
GROUP BY
substr('date_upd',1,7),
substr('date_upd',1,10);
【问题讨论】:
-
你想要什么结果?只需将
union all放在前两个查询之间即可。 -
它在运行时返回此错误:` SELECT ... GROUP BY substr('date_upd',1,10) UNION ALL SELECT ... GROUP BY substr('date_upd',1,7 ) ` 编译语句时出错:FAILED: SemanticException 19:5 联合双方的架构应该匹配。 _u1-subquery2 没有字段 day。在令牌“table_name”附近遇到错误
标签: sql hadoop hive bigdata hiveql