資料庫排名sql,group by 分組查詢按照時間最大值,sqlgroup

來源:互聯網
上載者:User

資料庫排名sql,group by 分組查詢按照時間最大值,sqlgroup

先給出類似的簡單表

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

那這樣,就解決問題了。




著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.