SQL 根据日期键对列求和
SQL Summing columns based on date key
我有 link、DataSet
中给出的数据集
我想将“order_item_unit_status”列分隔为单独的列,并为相同的交易金额带来相应的交易金额。下面给出了所需的输出。
Objective是将txn_amt归并为各自的类别,并根据txn_date_key进行分组。 (基本上基于 order_item_unit_status 列进行旋转并分别带来 txn_amt。)
我使用了下面的代码,
Select *, CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END as DELIVERED,
CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END as RETURNED
from sales
获得了 link Output
中提到的输出
输出未根据 txn_date_key 和找到的多个行项目进行分组。如果我使用 GROUP BY txn_date_key
则会抛出错误。
我还被告知服务器受HiveSQL 支持,不支持使用“:”、日期时间和无法创建临时表。我目前还在考虑如何解决这些限制。
非常感谢帮助
您必须在 group by
:
中使用您的专栏
编辑: 还 SUM()
添加了正确的输出...
Select *,
SUM(CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END) as DELIVERED,
SUM(CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END) as RETURNED
from sales
group by txn_amt,txn_date_key,order_item_unit_status
在 hivesql 中你可以使用 from_unixtime
命令
所有未聚合和选中的列都应分组。
此查询产生您需要的结果:
Select txn_date_key,
sum(CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END) as DELIVERED,
sum(CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END) as RETURNED
from sales
group by txn_date_key
结果:
txn_date_key delivered returned
20190701 3200 0
20210631 0 3000
我有 link、DataSet
中给出的数据集我想将“order_item_unit_status”列分隔为单独的列,并为相同的交易金额带来相应的交易金额。下面给出了所需的输出。
Objective是将txn_amt归并为各自的类别,并根据txn_date_key进行分组。 (基本上基于 order_item_unit_status 列进行旋转并分别带来 txn_amt。)
我使用了下面的代码,
Select *, CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END as DELIVERED,
CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END as RETURNED
from sales
获得了 link Output
中提到的输出输出未根据 txn_date_key 和找到的多个行项目进行分组。如果我使用 GROUP BY txn_date_key
则会抛出错误。
我还被告知服务器受HiveSQL 支持,不支持使用“:”、日期时间和无法创建临时表。我目前还在考虑如何解决这些限制。
非常感谢帮助
您必须在 group by
:
编辑: 还 SUM()
添加了正确的输出...
Select *,
SUM(CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END) as DELIVERED,
SUM(CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END) as RETURNED
from sales
group by txn_amt,txn_date_key,order_item_unit_status
在 hivesql 中你可以使用 from_unixtime
命令
所有未聚合和选中的列都应分组。
此查询产生您需要的结果:
Select txn_date_key,
sum(CASE WHEN order_item_unit_status ='DELIVERED'
THEN txn_amt ELSE 0 END) as DELIVERED,
sum(CASE WHEN order_item_unit_status ='RETURNED'
THEN txn_amt ELSE 0 END) as RETURNED
from sales
group by txn_date_key
结果:
txn_date_key delivered returned
20190701 3200 0
20210631 0 3000