首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >视图将行计数为查询结果中的列

视图将行计数为查询结果中的列
EN

Stack Overflow用户
提问于 2016-09-21 01:03:40
回答 1查看 59关注 0票数 1

第一件事是:我可以用一种方式获取数据。我的目的是提高查询结果的可读性。我在寻找是否可能。

我有一张用设备喂饱的桌子。我想得到在每小时发送的数据的数量,这些数据由两个相同的列组成。需要对这两列进行分组以确定一种设备类型。表结构类似于:

代码语言:javascript
复制
| identifier-1 | identifier-2 | day        | hour | data_name | data_value |
|--------------|--------------|------------|------|-----------|------------|
|  type_1      | subType_4    | 2016-08-25 | 0    | Key-30    | 4342       |
|--------------|--------------|------------|------|-----------|------------|
|  type_3      | subType_2    | 2016-08-25 | 0    | Key-50    | 96         |
|--------------|--------------|------------|------|-----------|------------|
|  type_6      | subType_2    | 2016-08-25 | 1    | Key-44    | 324        |
|--------------|--------------|------------|------|-----------|------------|
|  type_2      | subType_1    | 2016-08-25 | 1    | Key-26    | 225        |
|--------------|--------------|------------|------|-----------|------------|

我将使用由所有设备发送的一个特定的data_name,获取这个data_name的计数将给出每个小时发送的数据。可以按标识符-1、标识符-2、日和小时分组24行。但是,它们将对每种设备类型重复。

代码语言:javascript
复制
| identifier-1 | identifier-2 | day        | hour | count |
|--------------|--------------|------------|------|-------|
|  type_6      | subType_2    | 2016-08-25 | 0    |  340  |
|--------------|--------------|------------|------|-------|
|  type_6      | subType_2    | 2016-08-25 | 1    |  340  |
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|
|  type_1      | subType_4    | 2016-08-25 | 0    |  32   |
|--------------|--------------|------------|------|-------|
|  type_1      | subType_4    | 2016-08-25 | 1    |  30   |
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|

我想这样看结果:

代码语言:javascript
复制
| identifier-1 | identifier-2 | day        | count_of_0 | count_of_1 |
|--------------|--------------|------------|------------|------------|
|  type_6      | subType_2    | 2016-08-25 | 340        |  340       |
|--------------|--------------|------------|------------|------------|
|  type_1      | subType_4    | 2016-08-25 | 32         |  30        |
|--------------|--------------|------------|------------|------------|
|--------------|--------------|------------|------------|------------|

在SQL中,获得子查询和列是可能的,但在Hive上是不可能的。我猜它被称为关联子查询。

Hive column as a subquery select对这个问题的回答对我没有用。

你有什么想法或建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-21 01:09:00

您可以使用条件聚合来完成此操作:

代码语言:javascript
复制
select identifier1, identifier2, day,
       sum(case when hour = 0 then data_value else 0 end) as cnt_0,
       sum(case when hour = 1 then data_value else 0 end) as cnt_1
from t
where data_name = ??
group by identifier1, identifier2, day
order by identifier1, identifier2, day
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39605989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档