package com.profile.mainimport org.apache.spark.sql.expressions.Windowimport org.apache.spark.sql.functions._ import org.apache.log4j.{Level, Logger} import com.profile.tools.{DateTools, JdbcTools, LogTools, SparkTools}import com.dhd.comment.Constant…
hive 分组排序,topN 语法格式:row_number() OVER (partition by COL1 order by COL2 desc ) rankpartition by:类似hive的建表,分区的意思:order by :排序,默认是升序,加desc降序:rank:表示别名表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的) -- 分组排序-- 求某用户日期最大的3天select a.* from( selec…
查各个用户下单最早的一条记录 查各个用户下单最早的前两条记录 查各个用户第二次下单的记录 一.建表填数据: SET NAMES utf8mb4; -- 取消外键约束 ; -- ---------------------------- -- Table structure for order_table -- ---------------------------- DROP TABLE IF EXISTS `order_table`; CREATE TABLE `order_table` ( `…
如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分.(类似hive中: row_number() over(partition by)) select c.* from ( end) as sort_num,(@key_i:=parent_code) as tmp ,@key_i:='') b order by parent_code,code desc) c ; 个人理解, mysql 运行顺序:  from >>  where >…
pig可以轻松获取TOP n.书上有例子 hive中比较麻烦,没有直接实现的函数,可以写udf实现.还有个比较简单的实现方法: 用row_number,生成排名序列号.然后外部分组后按这个序列号多虑,样例代码如下 select a.* from( select 品牌,渠道,档期,count/sum/其它() as num row_number() over (partition by 品牌,渠道 order by num desc ) rank from table_name where 品牌,…
前言:        同事的业务场景是,按照cid.author分组,再按照id倒叙,取出前2条记录出来.        oracle里面可以通过row_number() OVER (PARTITION BY cid,author ORDER BY id DESC) 表示根据cid,author分组,在分组内部根据id排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的),而mysql数据库就没有这样的统计函数,需要自己写复杂的sql来实现. 使用动态sql来实现 先构造序列号…
转自:http://blog.csdn.net/wguangliang/article/details/50167283 要求:按照课程分组,查找每个课程最高的两个成绩. 数据文件如下: 第一列no为学号,第二列course为课程,第三列score为分数 [plain] view plain copy 1. mysql> select * from lesson; 2. +-------+---------+-------+ 3. | no    | course  | score | 4. +…
按照 某字段分组 某字段排序 然后取出该分组中排第1条数据(每组只取一条) SELECT* FROM( SELECT a.*,row_number() over(partition by ORI_FEE_ID order by MODIFY_TIME DESC) cn FROM AGENT_RESERVE_FEE_RATE a ) WHERE cn = 1; - MODIFY_TIME 排序字段- ORI_FEE_ID 分组字段- cn 为取值区间…
整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:INSERT INTO EXAM VALUES ('赵柳', '数学', '71');INSERT INTO EXAM VALUES ('张三', '数学', '81');INSERT INTO EXAM VALUES ('李四', '数学', '75');INSERT INTO EXAM VALUES…
写法1: use anypay; select tr.* from (select task_code, max(created_at) as cal from task_log group by task_code ) tl join task_log tr on tl.task_code = tr.task_code and tl.cal = tr.created_at; 写法2: use anypay; SELECT * FROM task_log AS t1 WHERE created_…