数据库排名sql,group by 分组查询按照时间最大值

先给出类似的简单表

DROP TABLE IF EXISTS `TouTiaoAnchor`;
CREATE TABLE `TouTiaoAnchor` (
  `HourId` int(10) unsigned NOT NULL,
  `BetinTime` varchar(40) NOT NULL,
  `AnchorUid` int(11) unsigned NOT NULL,
  `ticket` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '闪耀值',
  `pic` varchar(500) DEFAULT '',
  `Info` varchar(128) NOT NULL,
  `star` int(11) NOT NULL COMMENT '星星值',
  `hitnum` int(11) NOT NULL COMMENT '连击次数,累加连续上一次,否则重新累计',
  `week` int(11) NOT NULL COMMENT '第几周',
  `flag` int(11) NOT NULL COMMENT '是否标识用来排序的。1表示用来排序的',
  PRIMARY KEY (`HourId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

目前做排行榜排行,需要按照group by进行排名,每一次排名都是按照 每一组的最开始的那条记录的字段出现,

比如,我最开始使用

select AnchorUid,pic,SUM(star)as starNum,BetinTime from  TouTiaoAnchor  GROUP BY AnchorUid  ORDER BY starNum DESC,BetinTime asc LIMIT 0,3

这个时候的betintIme 都是使用的是第一条记录的时间,但是,我是想使用最新的那条记录的时间

所以,完全达不到我的想要的。

经过分析,group by 是出现第一条的的数据。因此,那我就给他倒过来 在来一次。

这个时候,就要使用重新来个表。

select AnchorUid,pic,SUM(star)as starNum,BetinTime from (select * from TouTiaoAnchor ORDER BY BetinTime DESC ) tt GROUP BY AnchorUid  ORDER BY starNum DESC,BetinTime asc LIMIT 0,3

那这样,就解决问题了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-28 05:28:34

数据库排名sql,group by 分组查询按照时间最大值的相关文章

SQL group by分组查询(转)

本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据.GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理. 在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用

SQL group by分组查询

本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据.GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理. 在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用

Group by 分组查询 实战

实战经历,由于本人在共享单车上班,我们的单车管理模块,可以根据单车号查询单车,但是单车号没有设置unique(独一无二约束),说以这就增加了单车号可能重复的风险,但是一般情况下,单车号是不会重复的,因为平台的单车都是人工录入的,但是二般情况下,就会出现,一旦出现,那么就shit了,很不幸,今天就出现了这个问题,“一个单车号,可以在单车管理模块查出来有两条记录”这个时候,我们就必须把出现这种问题的单车号,再次手动编辑改变,由于数据库里,单车管理表里有成千上万个单车,但是,都有哪一个单车号出现了两次

SQL点滴:分组查询并转出新表

注:1.在select语句中被分组的列作为参数,不能select a,b,c,d,e,f,i  from A group by a,这时会跳出错误“试图执行的查询中不包含作为聚合函数一部分的特定表达式‘b’”. 2. 查询结果想要另存一张表,可以用语句into,例如: select a,sum(b) as 总和,count(b) as 计数 into 总体情况表 group by a 实现了分组查询并另存一张表的目的. 一.分组查询1.使用group by进行分组查询在使用group by关键字

mysql group by 分组查询

请看下表: 问题: 把统计时间(statistic)相同的,服务域(service_domain_moid) a中的hd100的数量的和与hd100s的数量的和计算出来. 使用方法: group by 首先,我们把service_domain_moid为a的筛选出来,如下:  select * from statistic where service_domain_moid="a"; 其次: 我们把统计时间(statistic_time)相同的分组,求和 select sum(hd10

oracle Group by 分组查询后,分页

public Map getInWareHouseReport(int i, int j, InWareHouse inWareHouse) {        //查询分组后总条数        String countquery="select WS_SKU_ID,sum(IN_NUMBER),sum(WH_MONEY) from IN_WAREHOUSE p group by WS_SKU_ID";        //计算结束行        int m=i+j;        /

SQL group by 分组后,同一组的排序后取第一条

SELECT * FROM(                SELECT                     [SPID]                    ,[PH1]                    ,[PH1_Code]                    ,[ProjectName]                     ,ROW_NUMBER() OVER(PARTITION BY [SPID] ORDER BY [SPID]) RowNum             

关于thinkphp5中数据库分组查询group

在使用tp5的group进行分组查询总是报错,以主键进行分组是不报错,但没有任何意义 与聚合函数一起使用的不会报错,如官方文档给出的代码 Db::table('think_user') ->field('user_id,username,max(score)') ->group('user_id') ->select(); 但是和我的需求不一样,我需要根据某一列分组将指定字段链接起来 这是我用的原生查询,原生查询字段不需要加单引号 Db::query("select at_id

sql server——分组查询(方法和思想)

思想 先排序在汇总 sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息.而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算. 使用GROUP BY进行分组查询 实例演示 --查询男女生的人数 在没有学习分组查询之前,我们可以安装常规的思路解决查询需求: select count(*) from student where sex='男' select count(*) from student where sex='女' 那