这是下表
CREATE TABLE IF NOT EXISTS TestingTable1
(
BUYER_ID BIGINT,
ITEM_ID BIGINT,
CREATED_TIME STRING
)
这是上表中的以下数据-
BUYER_ID | ITEM_ID | CREATED_TIME
------------+------------------+-----------------------
1015826235 220003038067 2012-07-09 19:40:21,
1015826235 300003861266 2012-07-09 18:19:59,
1015826235 140002997245 2012-07-09 09:23:17,
1015826235 210002448035 2012-07-09 22:21:11,
1015826235 260003553381 2012-07-09 07:09:56,
1015826235 260003553382 2012-07-09 19:40:39,
1015826235 260003553383 2012-07-09 06:58:47,
1015826235 260003553384 2012-07-09 07:28:47,
1015826235 260003553385 2012-07-09 08:48:47,
1015826235 260003553386 2012-07-09 06:38:47,
1015826235 260003553387 2012-07-09 05:38:47,
1015826235 260003553388 2012-07-09 04:55:47,
1015826235 260003553389 2012-07-09 06:54:37,
34512201 597245693 2012-07-09 16:20:21,
34512201 8071787728 2012-07-09 15:19:59,
34512201 5868222883 2012-07-09 08:23:17,
34512201 2412180494 2012-07-09 22:21:11,
34512201 2422054205 2012-07-09 06:09:56,
34512201 1875744030 2012-07-09 19:40:39,
34512201 5639158173 2012-07-09 06:58:47,
34512201 5656232360 2012-07-09 07:28:47,
34512201 959188449 2012-07-09 08:48:47,
34512201 4645350592 2012-07-09 06:38:47,
34512201 5657320532 2012-07-09 05:38:47,
34512201 290419656539 2012-07-09 04:55:47,
如果您在表格中看到上述数据,则只有两个UNIQUE
BUYER_ID
,与我具有ITEM_ID
AND的那些相对应CREATED_TIME
。每当我要为每个日期触发此查询(意味着昨天的日期)时,我只需要今天日期前一天的时间的10个最新记录为依据BUYER_ID
。
因此,对于这个BUYER_ID
-34512201
我需要10个最新记录每个BUYER_ID
对基础CREATED_TIME
仅供昨天的日期。
每个人都BUYER_ID
可以拥有任何一天的数据。但是,我对今天的数据(总是指昨天的日期)之前的日期特别感兴趣,方法是查看CREATED_TIME
查找TOP 10
每个BUYER_ID
昨天的日期的最新数据。以下是我应该与之对应的示例输出BUYER_ID
。
样本输出。
BUYER_ID | ITEM_ID | CREATED_TIME
------------+------------------+-----------------------
34512201 2412180494 2012-07-09 22:21:11
34512201 1875744030 2012-07-09 19:40:39
34512201 597245693 2012-07-09 16:20:21
34512201 8071787728 2012-07-09 15:19:59
34512201 959188449 2012-07-09 08:48:47
34512201 5868222883 2012-07-09 08:23:17
34512201 5656232360 2012-07-09 07:28:47
34512201 5639158173 2012-07-09 06:58:47
34512201 4645350592 2012-07-09 06:38:47
34512201 2422054205 2012-07-09 06:09:56
1015826235 210002448035 2012-07-09 22:21:11
1015826235 260003553382 2012-07-09 19:40:39
1015826235 220003038067 2012-07-09 19:40:21
1015826235 300003861266 2012-07-09 18:19:59
1015826235 140002997245 2012-07-09 09:23:17
1015826235 260003553385 2012-07-09 08:48:47
1015826235 260003553384 2012-07-09 07:28:47
1015826235 260003553381 2012-07-09 07:09:56
1015826235 260003553383 2012-07-09 06:58:47
1015826235 260003553389 2012-07-09 06:54:37
我正在使用Hive
并Hive
支持类似SQL的语法。因此,我需要确保SQL也可以在Hive环境中工作。
谁能帮我这个?
更新:-
我正在使用以下查询,我需要从以下查询中获取最新的前10名,并且需要再添加一个用于日期检查的限定符,这意味着where clause for yesterday's date
-我不能TOP 10
在这里使用,因为Hive不支持TOP 10
sql语法。我需要其他方法来解决此问题。
SELECT * FROM TestingTable1 WHERE ORDER BY buyer_id, created_time DESC;
一项更新:-
我在下面的查询中使用编写了此查询RANK UserDefinedFunction
。
SELECT buyer_id, item_id, created_time, rk
FROM (
SELECT buyer_id, item_id, rank(item_id) as rk, created_time
FROM testingtable1
DISTRIBUTE BY buyer_id, item_id
SORT BY buyer_id, item_id, created_time desc
) a
WHERE rk < 10
ORDER BY buyer_id, created_time, rk;
这是Java-中的RANK UDF函数
package com.example.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public final class Rank extends UDF{
private int counter;
private String last_key;
public int evaluate(final String key){
if ( !key.equalsIgnoreCase(this.last_key) ) {
this.counter = 0;
this.last_key = key;
}
return this.counter++;
}
}
而且上面的查询无法按我想要的方式工作,我想在该查询中必须做出某种改变。
有没有在HiveQL中不使用任何UDF的方法?
SELECT FIRST 10 *
FROM TestingTable1
WHERE buyer_id = 34512201
ORDER BY created_time DESC;
问题内容: 上面是我的查询,我想获取一个人每天的记录。该记录应具有当天的最小日期时间。我需要该日期时间的完整记录 我的预期输出在这里 我尝试使用 但是对于“ t1”,我得到id = 1和第一行的输入日期。 请帮帮我。如果重复,则提供链接。 问题答案: 演示
问题内容: 全部, 我敢肯定这是一个非常简单的SQL查询问题,但是我敢肯定有一个很好的方法,也很糟糕的方法来做到这一点。留给我自己的设备,我有可能以后者结束。所以… 我在Access中有一个表,其中的数据如下所示: 我想要获取的是每个具有唯一“截止日期”日期(采用YYYYMM格式)的唯一ID的“值”。 因此,我的结果集应如下所示: 请注意,不同的ID将具有不同的“截止日期”日期。换句话说,我不能简
问题内容: 如何显示和计算日期为昨天的值?我曾经在数据库中插入日期。例: 我想显示表中存在多少个具有多个URL的URL,以及昨天有多少个URL被访问过。结果示例: 我已经有了获取昨天日期的想法,但是我没有一个想法来计算昨天存在一个URL的次数和计算表中存在URL的次数。 问题答案: 获取昨天日期的最简单最佳方法是: 您的查询将是: 出于好奇,为您提供满足条件的行 数 的原因(否则将需要繁琐且冗长的
本文向大家介绍写SQL:找出每个城市的最新一条记录。相关面试题,主要包含被问及写SQL:找出每个城市的最新一条记录。时的应答技巧和注意事项,需要的朋友参考一下 考察点:sql语句 id 城市 人口 信息 创建时间 1 北京 100 info1 时间戳 2 北京 100 info2 时间戳 3 上海 100 info3 时间戳 4 上海 100 info4 时间戳
Python3 实例 以下代码通过导入 datetime 模块来获取昨天的日期:# Filename : test.py # author by : www.runoob.com # 引入 datetime 模块 import datetime def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(day
问题内容: 如何使用PHP查找两个日期之间的天数? 问题答案: