如何基于HiveQL和SQL中特定列的子字符串进行选择?
我在蜂房里有一张桌子如何基于HiveQL和SQL中特定列的子字符串进行选择?,sql,hive,substring,hiveql,Sql,Hive,Substring,Hiveql,我在蜂房里有一张桌子 S.no Age minutes code 1 10 20 75081 2 11 114 75080 3 21 104 75180 4 31 124 75108 5 10 20 75083 6 11 114 75180 7 21 104 75180 我想编
S.no Age minutes code
1 10 20 75081
2 11 114 75080
3 21 104 75180
4 31 124 75108
5 10 20 75083
6 11 114 75180
7 21 104 75180
我想编写一个hivesql/sql查询,根据区域(即代码的前4位)给出总发言分钟数的排名列表。
我该怎么做呢?我知道SUBSTRING()为我提供了所需的剪切,但我无法从那里开始
Select code, minutes as total
from TableT
where S.no > 1
group by code
order by total
编辑:
基于zipcode前4位的排名结果应该是这样的
总代码
322(即104+114+104)7518154(即20+114+20)7508
1247510嗯。我想你想要这个:
select substr(zip, 1, 4) as region, sum(minutes) as minutes,
rank() over (order by sum(minutes) desc) as therank
from tableT
where s.no > 1
group by substr(zip, 1, 4)
order by minutes desc;
请编辑您的问题并提供所需结果。你想要什么样的结果还不清楚。另外,我删除了MySQL标记,因为这个问题是关于Hive的。请参阅编辑后的问题,谢谢。谢谢Gordon Linoff。我想这就是我要找的。我的数据是根据年、月、日进行分区的,所以我有三列指定月、日和年。如何编辑上述查询以查询特定日期范围?我知道sql,如果我有一个日期字段,我可以使用“选择yyyy-mm-dd和yyyy-mm-dd之间的日期”或执行“>=@user4590025…”。您仔细使用
年
、月
和日
。例如,对于给定的日期,您可以使用,其中年=2015,月=10,日=13
。在您的解决方案中,您已经完成了选择substr(zip,1,4)作为区域
。因此,到最后,我们不应该使用按区域分组
,而应该使用按子组分组(zip,1,4)
@user4590025。我想你可以按地区分组使用。我往往不记得哪些数据库允许在分组中使用别名,哪些不允许。