hive内group by取第一条数据,Hive中row_number的使用
1、hive的分组和组内排序---语法
语法:
row_number() over (partition by 字段a order by 计算项b desc ) rank
- rank是排序的别名
- partition by:类似hive的建表,分区的意思;
- order by :排序,默认是升序,加desc降序;
- 这里按字段a分区,对计算项b进行降序排序
2、hive的分组和组内排序 --- 实例
要取top10品牌,各品牌的top10渠道,各品牌的top10渠道中各渠道的top10档期
1、取top10品牌
select “品牌” , sum/count/其他() as num from "table_name" order by num desc limit 10;
2、取top10品牌下各品牌的top10渠道
select a.* from (select "品牌","渠道",sum/count() as num, row_number () over (partition by "品牌" order by num desc) rank from “table_name” where 品牌限制条件 group by “品牌”,“渠道” ) a having a.rank <= 10;
3、 取top10品牌下各品牌的top10渠道中各渠道的top10档期
select a.* from (select "品牌","渠道","档期",sum/count/其他() as num row_number() over (partition by "档期" order by num desc) rank from "table_name" where 品牌限制条件 group by “品牌”,“渠道) a Having a.rank <= 10;
我的应用:rank编号,rank小组内从1开始编号
SELECT v.visitor_phone,v.city,v.bigarea,
row_number()over (partition by visitor_phone order by visitor_phone desc) rank
from visitor v
WHERE = and visitor_name in('蒋凤','周金魁')
group BY v.visitor_phone,v.city
---------------------------------
18222666666 北京 华北区 1
18222666666 天津 华北区 2
13402777777 北京 华北区 1
13402777777 成都 中西部 2
取编号为1的
SELECT a.* from(
SELECT v.visitor_phone,v.city,v.bigarea,
row_number()over (partition by visitor_phone order by visitor_phone desc) rank
from visitor v
WHERE = and visitor_name in('蒋凤','周金魁')
group BY v.visitor_phone,v.city
)a
where a.rank=;
-------------------------------------
18222666666 北京 华北区 1
13402777777 北京 华北区 1
hive内group by取第一条数据,Hive中row_number的使用的更多相关文章
- sql分组取第一条数据
sq分组取第一条数据的一个方法: select * from ( select row_number() over(partition by ID order by ID) as rownum , * ...
- sqlalchemy怎么order_by降序/升序并取第一条数据
原文链接:https://blog.csdn.net/mark4541437/article/details/103755721 sqlalchemy怎么order_by降序/升序并取第一条数据 fr ...
- oracle 根据字段分组取第一条数据及rank函数说明
当前有这样一个需求,根据外键对子表数据进行分组,取每组中的一条数据就行了,如图: 如:COMMANDID = 26的有两条,只取一条数据. sql语句: select * from(select SY ...
- Oracle分组取第一条数据
看看曾经的私密日志.原来自己之前被非常多小而简单的问题困惑过. 看着那时候我们还是新手中的新手做的备忘笔记! 事实上就是用了Oracle的统计函数而已! 曾经的日记(看样子应该是曾经公司的源代码,呵呵 ...
- sql根据某一个字段重复只取第一条数据
比如上图,取3,4行记录的第一行也就是3行,而不返回4行. 使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值 ...
- mysql group by 取第一条
select * from table where id in (select max(id) from table group by sku) 说明:id是自增序列,sku是表中的一个字段
- sqlserver 数据库分组后取第一条数据
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助,点击查看教程. 比如查询用户某一天最后一笔交易后的账户余额 SELECT *( SELECT *, row_num ...
- postgresql分组后获取第一条数据
-- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- ...
- MYSQL实现分组排序并取组内第一条数据
一.需要实现分组排序并且取组内状态优先级最高的数据 有一张这样的数据表, 需求是根据error_type分组然后取status最小的第一条数据 第一种写法: select t.* from ( sel ...
随机推荐
- Shell-删除误解压的文件
我意外在/var/www/html/,而不是/home/projects/www/current下解压了一个tarball.它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的. ...
- nginx反向代理解决跨域
nginx作为反向代理服务器,就是把http请求转发到另一个或者一些服务器上.通过把本地一个url前缀映射到要跨域访问的web服务器上,就可以实现跨域访问.对于浏览器来说,访问的就是同源服务器上的一个 ...
- oracle监控
python代码 #!/usr/bin/env python # -*- coding: UTF-8 -*- import subprocess import sys import re def ru ...
- hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等
核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...
- 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)
题意简介 没什么好说,就是让你求出 1 ~ n 之间每个数转化为二进制后 '1' 的个数,然后乘起来输出积 题目分析 emmmm.... 两种解法(同是 $O(\log^2 N)$ 的算法,组合数效率 ...
- vue 不常见操作
对 v-html 的扩展操作, 问题产生背景, 在vue 项目中,用v-html渲染 html字符串,这里面包括a 标签等内容,因为某种需求,a 的默认跳转不符合要求,要经过自己定义的方法跳转. 原 ...
- vue-cli(vue脚手架)超详细教程
都说Vue2简单上手容易,的确,看了官方文档确实觉得上手很快,除了ES6语法和webpack的配置让你感到陌生,重要的是思路的变换,以前用jq随便拿全局变量和修改dom的锤子不能用了,vu ...
- tcp和udp协议的聊天 和udp协议的时间同步机制-----编码
tcp协议聊天 服务端:: 客户端 udp协议的聊天 ############ udp协议 ########### 服务器 import socket sk = socket.socket(type ...
- 前端----css 选择器
css 为了修饰页面作用, 让页面好看 ⑴ css的引入方式1,行内样式body里面2,内接样式在html里面的 style 里面3,外接样式两种:①链接式: <link rel=" ...
- Laravel 5.2问题-----postman进api的post请求,为什么出现Forbidden?
Forbidden?就纳闷了,有写验证规则的,但是它出现紧张,感觉就是我落了设置什么东西了才会这样? 果不其然, Laravel有个一自动验证的,创建的时候是默认打开的, namespace App\ ...