直接上代码:1、group_concatselect SUBSTRING_INDEX(group_concat(id order by id desc),‘,‘,2) id from content c
where c.grouperid in (1,2)
GROUP BY c.grouperid in (1,2); 2、maxselect max(id) as id from content where grouperid in (1,2)
group by grouperid 有了id,那么下面就好办了, 自由发挥。 原文:https://www.cnblogs.com/jiduoduo/p/15061807.html
1、组函数 组函数:即多行函数,组函数将一组记录作为整体计算,每组记录返回一个结果,而不是每条记录返回一个结果。2、常用的组函数有: 1》avg([distinct|all]expr):计算多行平均值,其中,expr可以是变量、常量或数据列,但其数据类型必须是数值类型。distinct表示不计算重复值;all用和不用的效果完全一样,表明需要计算重复值。 2》count({*|[distinct|all]expr}):用“*”号表示统计该表内的记录行数;distinct表示...
感谢分享:http://blog.itpub.net/13379967/viewspace-715701/ 在统计需求中 有时往往需要对区间进行分组 mysql中可以利用elt函数来实现此类需求 mysql> select * from k1;+------+------+| id | yb |+------+------+| 1 | 100 || 2 | 11 || 3 | 5 || 4 | 501 || 5 | 1501 || 6 | 1 |+------+------+ 现在要进行统计,小于100的,100~500的,500~1000的,1000以上的,这各个区间的id数 利用interv...
解决方案1SELECT * FROM (SELECT * from tb_dept ORDER BY id desc LIMIT 100000) a GROUP BY parent_id order by id;// 注: 不加 limit 可能会导致结果不正确>解决方案2SELECT b.*from douyin_fans b join(
SELECT max(md_id) maxIdFROM douyin_fanswhere time>= ‘.strtotime("-30 day").‘GROUP BY member_id) mf on mf.maxId= b.md_idorder by b.total_fans desclimit ‘.input(‘ limit/d ‘,0).‘,30‘ 原文:https://www...
背景:需要将省、市、区三级联动组装成固定的json结构返回给前端,省市区分别存在三张表中,通过省查出市,在通过市查出区,然后再for循环组装数据,请求时间超过30秒 优化方案:查出省后,直接根据省查出市和 市对应的区县,利用GROUP_CONCAT函数将区县拼接成json字符串,然后构造数据节点返回给前端。整个请求耗时3秒左右表结构:省:市: 区/县sql:String sql = "SELECT c.cityid value,c.city text,GROUP_CONCAT( ‘{\...
需求:表中同一个uid(用户)拥有多条游戏等级记录,现需要取所有用户最高等级(level)的那一条数据,且时间(time)越早排越前。这是典型的排名表+------+-------+--------------+---------------------+| uid |level| role | time |+------+-------+--------------+---------------------+|7|1| 摇滚圣魔 |2014-06-1215:01:05||1134|4| 唯我独尊 |2014-06-1215:02:38||1134|4| 唯我独尊 |2...
1. MySQL:1.聚集函数:max(),min(),avg(),sum(),count()在分组上应用聚集函数。2.聚合函数对应于每组的数据:即max(id) 每组最大的id3.having 是group by分组后的结果集再加的条件(having相当于Where 但只能在group by后,条件可以是聚合函数(真实表中可能不存在的数据))。例如:SELECT*FROMtb_chatlog
WHEREchatid IN ( SELECTmax( Chatid ) maxId FROM tb_chatlog WHERE LoginUser =‘*******‘GROUPBY LoginUser, Buy...
取GID每组 COL2最大的3条记录: SELECT a.id,a.gid,a.col1,a.col2 FROM t2 a WHERE 3>=( SELECT COUNT(*) FROM t2 b WHERE a.gid=b.gid AND a.col2<=b.col2) ORDER BY a.gid,a.col2 desc或 SELECT a.id,a.gid,a.col1,a.col2 FROM t2 a LEFT JOIN t2 b ON a.gid=b.gid AND a.col2<=b.col2 GROUP BY a.id,a.gid,a.col1,a.col2 HAVING COUNT(b.id)<=3 ORDER BY a.gid,a.col2 desc原文:http://www.c...
create_time时间格式1SELECT DATE_FORMAT(create_time,‘%Y%u‘) weeks,COUNT(id) COUNTFROM role GROUPBY weeks;
23SELECT DATE_FORMAT(create_time,‘%Y%m%d‘) days,COUNT(id) COUNTFROM role GROUPBY days;
4SELECT DATE_FORMAT(create_time,‘%Y%m‘) months,COUNT(id) COUNTFROM role GROUPBY months 根据时间戳格式1SELECT FROM_UNIXTIME(create_time,‘%Y%u‘) weeks,COUNT(id) COUNTFROM role GROUPBY weeks;
2SELECT F...
组函数针对的是指定字段的非空值。注意:where子句中不能出现组函数!!!avg() 平均值(只能针对数值型 )max() 最大值(不限制类型)min() 最小值(不限制类型)count() 计数(针对记录数目,即行数)stddev() 方差(只能针对数值型)sum() 求和(只能针对数值型) 前提:person表id name dept_id salary manager_id0001 wangda 101 8500[NULL]0002 wanger 1033 000 00090003 wangsan 102 4000 00060004 w...
类如 有一个帖子的回复表,posts( id , tid , subject , message , dateline ) ,id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), subject 为回复标题, message 为回复内容, dateline 为回复时间,用UNIX 时间戳表示,现在要求 选出 前十个来自不同主题的最新回复SELECT*FROM posts GROUPBY tid LIMIT 10这样一个sql语句选出来的并非你想要的 最新的回复,而是最早的回复,实际上是某篇主题的第一条回复记录!...
1.创建表
create table score(id int,player varchar(20),position varchar(20),score float);insert into score values(1,‘哈登‘,‘guard‘,30.0),(2,‘杜兰特‘,‘vanguard‘,29.1),(3,‘詹姆斯‘,‘vanguard‘,28.3),(4,‘安东尼-戴维斯‘,‘vanguard‘,27.8),(5,‘利拉德‘,‘guard‘,27.2);2.分组SELECT 字段名1,........FROM 表名GROUP BY 字段名1......[HAVING 条件表达式](2)对球员位置归类,显示每一位置的总分select...
业务中有个字段组成部分由分类名称+日期等组成,想统计每个分类名称有几条数据,就用了下面的第一种方法,记录备忘一下:1. SUBSTRING_INDEX(字段名,‘分割符’, 第几个分割符(以1开始)) 函数 截取字符串的函数SELECT content,count(SUBSTRING_INDEX(content,"时间",1)) FROM 表名 WHERE 条件 GROUP BY SUBSTRING_INDEX(content,"时间",1) ORDER BY id DESC ;2.固定开头 left(字段名,长度) 函数 是一个字符串函数,它...
如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分。(类似hive中: row_number() over(partition by))select c.*from
( select a.*, (@i :=casewhen@key_i=parent_code then@i+1else1end) as sort_num,(@key_i:=parent_code) as tmp from my_test a, (SELECT@i :=0,@key_i:=‘‘) borderby parent_code,code desc) c
where c.sort_num=1;个人理解, mysql 运行顺序: from >> where...
SQL查询中,根据列A分组,分组后针对列B执行统计函数,是一件常用也很重要功能,如select T.a, max(T.b) from T order by T.a asc, T.b desc group by T.aselect T.a, count(T.b) from T order by T.a asc, T.b desc group by T.a一直这样写SQL,直到有一天,一个做股票的朋友(非IT人事)和我聊天,说他自己用Python整了点数据,想分析下每个版块成交量前三的股票,问我知不知道怎么用SQL查出来(这是一个分组排名取若干首级的需...