*****午夜没有激情*****,来这里求一条SQL语句~~~

kaikai_kk 2009-03-17 01:22:49
表:
create table tb(A smalldatetime ,B varchar(20),C Float)
------------------------------------------
数据:
2009/03/01 001 1
2009/03/01 001 2
2009/03/02 001 3
2009/03/03 001 4
2009/03/04 002 5
2009/03/05 002 6
2009/03/06 003 7
2009/03/06 003 8
2009/03/06 003 9
2009/03/07 003 10
2009/03/08 001 11
2009/03/08 001 12
...

根据B不同,A 按日期降序排列,取前3条数据,结果如下:
---------------------------------------------
2009/03/03 001 4
2009/03/08 001 11
2009/03/08 001 12
2009/03/04 002 5
2009/03/05 002 6
2009/03/06 003 8
2009/03/06 003 9
2009/03/07 003 10
...

求助了...
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaikai_kk 2009-03-17
  • 打赏
  • 举报
回复
嗯,晓得了,谢谢
百年树人 2009-03-17
  • 打赏
  • 举报
回复
if object_id('[tb]') is not null drop table [tb]
go
create table tb(A smalldatetime ,B varchar(20),C Float)
insert [tb]
select '2009/03/01','001',1 union all
select '2009/03/01','001',2 union all
select '2009/03/02','001',3 union all
select '2009/03/03','001',4 union all
select '2009/03/04','002',5 union all
select '2009/03/05','002',6 union all
select '2009/03/06','003',7 union all
select '2009/03/06','003',8 union all
select '2009/03/06','003',9 union all
select '2009/03/07','003',10 union all
select '2009/03/08','001',11 union all
select '2009/03/08','001',12

select *
from [tb] t
where (select count(1)+1 from tb where b=t.b and (a>t.a or c>t.c))<=3
order by b,a desc


--测试结果:
/*
A B C
------------------------------------------------------ -------------------- -----------------------------------------------------
2009-03-08 00:00:00 001 11.0
2009-03-08 00:00:00 001 12.0
2009-03-03 00:00:00 001 4.0
2009-03-05 00:00:00 002 6.0
2009-03-04 00:00:00 002 5.0
2009-03-07 00:00:00 003 10.0
2009-03-06 00:00:00 003 9.0
2009-03-06 00:00:00 003 8.0

(所影响的行数为 8 行)
*/
dawugui 2009-03-17
  • 打赏
  • 举报
回复
create table tb(A smalldatetime ,B varchar(20),C Float) 
insert into tb values('2009/03/01', '001', 1 )
insert into tb values('2009/03/01', '001', 2 )
insert into tb values('2009/03/02', '001', 3 )
insert into tb values('2009/03/03', '001', 4 )
insert into tb values('2009/03/04', '002', 5 )
insert into tb values('2009/03/05', '002', 6 )
insert into tb values('2009/03/06', '003', 7 )
insert into tb values('2009/03/06', '003', 8 )
insert into tb values('2009/03/06', '003', 9 )
insert into tb values('2009/03/07', '003', 10)
insert into tb values('2009/03/08', '001', 11)
insert into tb values('2009/03/08', '001', 12)
go

select t.* from tb t where a in (select top 3 a from tb where b = t.b order by a desc) order by t.b , t.a
/*
A B C
------------------------------------------------------ -------------------- -----------------------------------------------------
2009-03-03 00:00:00 001 4.0
2009-03-08 00:00:00 001 11.0
2009-03-08 00:00:00 001 12.0
2009-03-04 00:00:00 002 5.0
2009-03-05 00:00:00 002 6.0
2009-03-06 00:00:00 003 7.0
2009-03-06 00:00:00 003 8.0
2009-03-06 00:00:00 003 9.0
2009-03-07 00:00:00 003 10.0

(所影响的行数为 9 行)

*/

select m.* from
(
select t.* from tb t where a in (select top 3 a from tb where b = t.b order by a desc)
) m where c in (select top 3 c from
(
select t.* from tb t where a in (select top 3 a from tb where b = t.b order by a desc)
) n where n.b = m.b order by c desc
)
order by m.b , m.a
/*
A B C
------------------------------------------------------ -------------------- -----------------------------------------------------
2009-03-03 00:00:00 001 4.0
2009-03-08 00:00:00 001 11.0
2009-03-08 00:00:00 001 12.0
2009-03-04 00:00:00 002 5.0
2009-03-05 00:00:00 002 6.0
2009-03-06 00:00:00 003 8.0
2009-03-06 00:00:00 003 9.0
2009-03-07 00:00:00 003 10.0

(所影响的行数为 8 行)
*/

drop table tb
dawugui 2009-03-17
  • 打赏
  • 举报
回复
create table tb(A smalldatetime ,B varchar(20),C Float) 
insert into tb values('2009/03/01', '001', 1 )
insert into tb values('2009/03/01', '001', 2 )
insert into tb values('2009/03/02', '001', 3 )
insert into tb values('2009/03/03', '001', 4 )
insert into tb values('2009/03/04', '002', 5 )
insert into tb values('2009/03/05', '002', 6 )
insert into tb values('2009/03/06', '003', 7 )
insert into tb values('2009/03/06', '003', 8 )
insert into tb values('2009/03/06', '003', 9 )
insert into tb values('2009/03/07', '003', 10)
insert into tb values('2009/03/08', '001', 11)
insert into tb values('2009/03/08', '001', 12)
go

select t.* from tb t where a in (select top 3 a from tb where b = t.b order by a desc) order by t.b , t.a

drop table tb

/*
A B C
------------------------------------------------------ -------------------- -----------------------------------------------------
2009-03-03 00:00:00 001 4.0
2009-03-08 00:00:00 001 11.0
2009-03-08 00:00:00 001 12.0
2009-03-04 00:00:00 002 5.0
2009-03-05 00:00:00 002 6.0
2009-03-06 00:00:00 003 7.0
2009-03-06 00:00:00 003 8.0
2009-03-06 00:00:00 003 9.0
2009-03-07 00:00:00 003 10.0

(所影响的行数为 9 行)

*/


注意你的003有四条数据.
dawugui 2009-03-17
  • 打赏
  • 举报
回复
select t.* from tb t where a in (select top 3 a from tb where b = t.b order by a desc)
内容概要:本文研究了基于麻雀优化算法(SSA)优化CNN-BiLSTM-Attention混合模型的风电功率预测方法,采用多变量输入实现单步预测。通过SSA算法对模型的关键超参数进行智能寻优,有效提升了预测的精度与鲁棒性。该混合模型充分融合了卷积神经网络(CNN)的局部特征提取能力、双向长短期记忆网络(BiLSTM)对时序数据前后依赖关系的建模优势,以及注意力(Attention)机制对关键时间步特征的自适应加权聚焦能力,能够深入挖掘风电数据中复杂的非线性动态特性与时序关联模式。研究在Matlab平台上完成了完整的代码实现,并通过严谨的实验验证了所提方法在风电功率预测任务中相较于传统模型的优越性能。; 适合人群:具备一定机器学习与深度学习理论基础,熟悉Matlab编程环境,从事新能源发电预测、电力系统调度、智能优化算法应用或相关领域研究的科研人员、工程技术人员及高年级研究生。; 使用场景及目标:①应用于风电场实际运行中的短期功率单步预测,为电网调度决策提供高精度数据支持,提升新能源消纳能力和系统运行稳定性;②为深度学习模型的超参数优化提供一种高效的智能算法应用范例;③作为融合多种先进神经网络结构与元启发式优化算法的综合性研究案例,服务于学术科研复现、技术创新与教学实践。; 阅读建议:建议读者结合提供的Matlab代码,深入理解从数据预处理、模型构建、SSA优化流程到结果分析的完整技术链条,重点关注多变量特征选择、网络结构设计细节及注意力机制的实现原理,并可通过替换数据集或调整模型组件来进一步拓展研究深度与应用广度。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧