Sql 仅查询最后n个分区
我有一个按日期划分的表(Sql 仅查询最后n个分区,sql,hive,partition,Sql,Hive,Partition,我有一个按日期划分的表(table1)。它可能看起来像这样: ╔════════════╦═══════╦══════╗ ║ date ║ col1 ║ col2 ║ ╠════════════╬═══════╬══════╣ ║ 2020-06-16 ║ Jeff ║ 3 ║ ║ 2020-06-16 ║ Bob ║ 148 ║ ║ 2020-06-16 ║ Karen ║ 101 ║ ║ 2020-06-15 ║ Joy ║ 9 ║ ║ 2020-06
table1
)。它可能看起来像这样:
╔════════════╦═══════╦══════╗
║ date ║ col1 ║ col2 ║
╠════════════╬═══════╬══════╣
║ 2020-06-16 ║ Jeff ║ 3 ║
║ 2020-06-16 ║ Bob ║ 148 ║
║ 2020-06-16 ║ Karen ║ 101 ║
║ 2020-06-15 ║ Joy ║ 9 ║
║ 2020-06-15 ║ Joe ║ 33 ║
║ 2020-06-12 ║ Kevin ║ 48 ║
║ 2020-06-12 ║ Raj ║ 100 ║
║ 2020-06-12 ║ Karen ║ 9 ║
║ ... ║ ... ║ ... ║
╚════════════╩═══════╩══════╝
我想运行查询
SELECT count(*)FROM table1 group by col1 have count(*)>1
,但假设我只想在最后两个分区(日期2020-06-16
和2020-06-15
)上运行该查询。在蜂箱中有没有一种简单的方法可以做到这一点?换句话说,我只想在给定时间检查前n个分区。我不确定这是否解决了您的问题,但您可以参考当前日期:
where date >= date_sub(current_date, -2)
我不确定这是否解决了您的问题,但您可以参考当前日期:
where date >= date_sub(current_date, -2)
尝试使用子查询获取具有
订单日期
和限制2
的两个最新日期:
SELECT count(*)
FROM table1
WHERE date IN (SELECT DISTINCT date FROM table1 ORDER BY date DESC LIMIT 2)
GROUP BY col1
HAVING count(*) > 1
尝试使用子查询获取具有
订单日期
和限制2
的两个最新日期:
SELECT count(*)
FROM table1
WHERE date IN (SELECT DISTINCT date FROM table1 ORDER BY date DESC LIMIT 2)
GROUP BY col1
HAVING count(*) > 1