我正在尝试编写一个查询来获取唯一的交易值,包括销售价值和最新发布日期。
这是我的问题:
select transaction, sales, max(sale_date) from xyz_table where report_date = 20160718 group by transaction, sales;
这是我得到的结果: 这是样本数据:
|transaction | sales| sale_date| report_date|
|1397115220084030| 0.000144| 20160714|20160718|
|13971230534538500| 0 | 20160716|20160718|
|13973937437448300| 0.000001| 20160716|20160718|
|13976744119997000| 0.008563| 20160714|20160718|
|13976744119997000| 0.002392| 20160715|20160718|
我想要的是与最新销售日期的独特交易: 这是必需的数据:
|transaction | sales| sale_date| report_date|
|1397115220084030| 0.000144| 20160714|20160718|
|13971230534538500| 0 | 20160716|20160718|
|13973937437448300| 0.000001| 20160716|20160718|
|13976744119997000| 0.002392| 20160715|20160718|
我试图做最大的销售但是仍然没有给出正确的结果:
select transaction, Max(sales), max(sale_date) from xyz_table where report_date = 20160718 group by transaction;
错误的结果: 这是必需的数据:
|transaction | sales| sale_date| report_date|
|1397115220084030| 0.000144| 20160714|20160718|
|13971230534538500| 0 | 20160716|20160718|
|13973937437448300| 0.000001| 20160716|20160718|
|13976744119997000| 0.008563| 20160715|20160718|
请有人帮助我。
由于
答案 0 :(得分:1)
在Hive中,您将使用窗口函数:
select t.*
from (select t.*,
row_number() over (partition by transaction order by sale_date desc) as seqnum
from transactions t
) t
where seqnum = 1;
MySQL查询会有很大不同,因为它不支持这种ANSI标准功能。