如何基于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)7518
154(即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。我想你可以按地区分组使用。我往往不记得哪些数据库允许在
分组中使用别名,哪些不允许。