一道看似简单的sql需求却难倒各路高手 - 你也来挑战下吗?

简介: 转自:http://www.cnblogs.com/keguangqiang/p/4535046.html   听说这题难住大批高手,你也来试下吧。ps:博问里的博友提出的。 原始数据 select * from t_jeff t  简单排序后数据 select * from t_jeff t order by t.

转自:http://www.cnblogs.com/keguangqiang/p/4535046.html

 

听说这题难住大批高手,你也来试下吧。ps:博问里的博友提出的。

原始数据

select * from t_jeff 

简单排序后数据

select from t_jeff order by t.VINNumber,t.channelid desc

需求,根据VINNumber分组(每对连接一起) ,再根据ChannelID倒序

1、VINNumber同组的放一起
2、组之间排序逻辑:按照每组ChannelID最大值 倒序
3、组内排序:按照ChannelID倒序。
结果需要排列如图

 
创建脚本
  1. CREATE TABLE t_jeff (
      id int NOT NULL,
      VINNumber varchar(255DEFAULT NULL,
     ChannelID varchar(255DEFAULT NULL,
      TimeStamp datetime DEFAULT NULL,
      PRIMARY KEY (id)
    ) ;
    INSERT INTO t_jeff VALUES ('1', 'Group3', '3', '2015-05-27 00:00:00');
    INSERT INTO t_jeff VALUES ('2', 'Group2', '5', '2015-05-23 00:00:00');
    INSERT INTO t_jeff VALUES ('3', 'Group1', '4', '2015-05-25 00:00:00');
    INSERT INTO t_jeff VALUES ('4', 'Group2', '3', '2015-05-29 00:00:00');
    INSERT INTO t_jeff VALUES ('7', 'Group1', '2', '2015-05-30 00:00:00');
怎么样,有思路吗
select max_channel_in_group,id, vinnumber, channelid, timestamp
from (
    select id, vinnumber, channelid, timestamp, max_channel_in_group = max(channelid) over(partition by vinnumber)
    from t_jeff
) t
order by max_channel_in_group desc,channelid desc
View Code

 

 
相关文章
|
SQL 数据挖掘
看似简单的一道SQL面试题,你是否能够很快写出答案?
看似简单的一道SQL面试题,你是否能够很快写出答案?
看似简单的一道SQL面试题,你是否能够很快写出答案?
|
SQL
一道看似简单的sql需求(转)
听说这题难住大批高手,你也来试下吧。ps:博问里的博友提出的。 原始数据 select * from t_jeff t  简单排序后数据 select * from t_jeff t order by t.VINNumber,t.channelid desc 需求,根据VINNumber分组(每对连接一起) ,再根据ChannelID倒序 1、VINNumber同组的放一起2、组之间排序逻辑:按照每组ChannelID最大值 倒序3、组内排序:按照ChannelID倒序。
733 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
102 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
59 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
316 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
435 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
285 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。