如何取出每组里的前二十条记录并分组?加我MSN也可以。在线急等。解决就给分。

pbwf 2006-11-28 10:38:35
select max(温度) from 温度记录 group by 批次号 这样是取出每组最大温度
伟 说:
select top 20 温度 from 温度记录 order by 时间是取出每组按时间排序的前20个,怎么把这两条,结合在一起。

可能我有若干个组(就是有很多个批次号,第一个批次有很多记录,这些记录属于某个批次),每组记录数都不定。我只要每组满足时间限制的前二十条。

谁可以解决,马上给分。

msn:tspbwf@hotmail.com




...全文
440 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhhdyj 2006-11-29
  • 打赏
  • 举报
回复
......
等着接分...
^_^
danmali 2006-11-28
  • 打赏
  • 举报
回复
我也很想知道,谁来回答以下
danmali 2006-11-28
  • 打赏
  • 举报
回复
楼主的意思是
两个表
A表是批次,B表是所有批次的纪录
比如

A 里面的批次类别现在不知道有多少,比如现在有3条
AId Aname
1 first
2 second
3 third

B 使所有的记录
BId Bname AId
01 value1 1
02 value2 1
03 value3 1
04 value4 2
05 value5 2
06 value6 2
07 value7 3
08 value8 3
09 value9 3
010 value10 3
011 value11 2
012 value12 2
013 value13 3
014 value14 3
015 value15 1

B表中现在有15条记录 属于1的有4条 属于2得有5条 属于3的有6条

现在需要一个方法搜索出所属批次的前2条记录的一个集合,就是说现在上面假定有3个批次,那么搜索出的结果集合是6条纪录,就是说每个类别的最大的两条纪录的集合,最主要这个类别是不定的

Result
BId Bname AId
015 value15 1
03 value3 1
012 value12 2
011 value11 2
010 value10 3
09 value9 3

dawugui 2006-11-28
  • 打赏
  • 举报
回复
假设T表为你取出来的温度最高的前20个。

select a.* from T,
(select 批次号,max(温度) as 温度 from T group by 批次号) b
where a.批次号 = b.批次号 and a.温度 = b.温度

我都说了,你给出数据和想要的结果.

比如数据是:
...................

结果是:
..................
pbwf 2006-11-28
  • 打赏
  • 举报
回复
前20个,是按时间先取出来的。指同一批次中。然后取出的这20个记录中,我要温度最大的。
而不是直接取一个批次中,温度最高的前20个。
pbwf 2006-11-28
  • 打赏
  • 举报
回复
我只想要
960511 1187
960512 1171这种的,左面一个批次,只出现一回。
dawugui 2006-11-28
  • 打赏
  • 举报
回复
只要每个批次的最大值?
pbwf 2006-11-28
  • 打赏
  • 举报
回复
楼上的老师,可以加我一下MSN吗?我的MSN:tspbwf@hotmail.com

结果是要单一的。比如上面语句出来的是
批次号 温度
960511 1187
960512 1171
960511 1058
960511 965
960511 992
960511 1018
960511 925
960511 1161
960511 1067
960511 1187
960511 1094
960511 923
960511 1042
960511 949
960511 976
960511 1118
960511 1145
960511 1051
960511 1171
960511 1078
960511 1007
960511 1033
960511 940
960512 1069
960512 975
960512 909
960512 1144
960512 1171
960512 1100
960512 1006
960512 1104
960512 1033
960512 940
960512 1060
960512 966
960512 1135
960512 1117
960512 1046
960512 1144
960512 1073
960512 979
960512 1006
960512 913
960512 939

我只想要
960511 1099
960512 1199
这种的,左面一个批次,只出现一回。
dawugui 2006-11-28
  • 打赏
  • 举报
回复
你给点数据和需要的结果.
pbwf 2006-11-28
  • 打赏
  • 举报
回复
上面朋友出来的结果是这样的
批次号 温度
960511 1187
960512 1171
960511 1058
960511 965
960511 992
960511 1018
960511 925
960511 1161
960511 1067
960511 1187
960511 1094
960511 923
960511 1042
960511 949
960511 976
960511 1118
960511 1145
960511 1051
960511 1171
960511 1078
960511 1007
960511 1033
960511 940
960512 1069
960512 975
960512 909
960512 1144
960512 1171
960512 1100
960512 1006
960512 1104
960512 1033
960512 940
960512 1060
960512 966
960512 1135
960512 1117
960512 1046
960512 1144
960512 1073
960512 979
960512 1006
960512 913
960512 939

我想出来左面就是批次号,而不是重复的,有多少批次,左面就显示多少,右面是满足这个批次的前二十条记录(按时间排)
dawugui 2006-11-28
  • 打赏
  • 举报
回复
第一个给错了,是排序的.

分类取前N个记录的SQL语句

有一个表AAA,结构如下:
类别编号 说明 排序
a aa 1
a aa2 2
a aa3 3
b bb 1
b bb2 2
b bb3 3
c cc 1
c cc2 2
c cc3 3
需要查询出来的结果是每个类别的头2条记录,按排序进行排序,结果如下:
类别编号 说明 排序
a aa 1
a aa2 2
b bb 1
b bb2 2
c cc 1
c cc2 2


if object_id('pubs..t1') is not null
drop table t1
go

create table t1(
类别编号 varchar(10),
说明 varchar(10),
排序 int
)
insert into t1(类别编号,说明,排序) values('a','aa',1)
insert into t1(类别编号,说明,排序) values('a','aa2',2)
insert into t1(类别编号,说明,排序) values('a','aa3',3)
insert into t1(类别编号,说明,排序) values('b','bb',1)
insert into t1(类别编号,说明,排序) values('b','bb2',2)
insert into t1(类别编号,说明,排序) values('b','bb3',3)
insert into t1(类别编号,说明,排序) values('c','cc',1)
insert into t1(类别编号,说明,排序) values('c','cc2',2)
insert into t1(类别编号,说明,排序) values('c','cc3',3)

select * from t1 as t
where (select count(*) from t1 where 类别编号 = t.类别编号 and 排序 < t.排序) < 2

drop table t1


类别编号 说明 排序
---------- ---------- -----------
a aa 1
a aa2 2
b bb 1
b bb2 2
c cc 1
c cc2 2

(所影响的行数为 6 行)
pbwf 2006-11-28
  • 打赏
  • 举报
回复
序号 批次号 时间 温度 钢定号

100 1 2006-1-1 105 1001

101 2 2006-2-2 88 1002

表中用到的,就是这些字段了。批次号为分组的依据。很多记录属于某一个批次号。
dawugui 2006-11-28
  • 打赏
  • 举报
回复
select 批次号 , max(温度) as 温度 from 温度记录 group by 批次号
union all
select 批次号 , 温度 from 温度记录 t where (select count(*) from 温度记录 where 批次号 = t.批次号 and 温度 > t.温度) <= 20
dawugui 2006-11-28
  • 打赏
  • 举报
回复
select top 20 温度 from 温度记录 order by 时间是取出每组按时间排序的前20个??这个不行吧.

按某一字段分类排序

有一表
a b c
7 aa 153
9 aa 152
6 aa 120
8 aa 168
5 bb 159
7 bb 179
8 bb 149
9 bb 139
6 bb 169
对b列中的值来分类排序并分别加一序号,形成一新表
px a b c
1 6 aa 120
2 9 aa 152
3 7 aa 153
4 8 aa 168
1 9 bb 139
2 8 bb 149
3 5 bb 159
4 6 bb 169
5 7 bb 179


declare @tab table(a int,b varchar(2),c int)

insert @tab values(7,'aa',153)
insert @tab values(9,'aa',152)
insert @tab values(6,'aa',120)
insert @tab values(8,'aa',168)
insert @tab values(5,'bb',159)
insert @tab values(7,'bb',179)
insert @tab values(8,'bb',149)
insert @tab values(9,'bb',139)
insert @tab values(6,'bb',169)

select * from @tab

select px=(select count(1) from @tab where b=a.b and c<a.c)+1 , a,b,c from @tab a
order by b , c

px a b c
----------- ----------- ---- -----------
1 6 aa 120
2 9 aa 152
3 7 aa 153
4 8 aa 168
1 9 bb 139
2 8 bb 149
3 5 bb 159
4 6 bb 169
5 7 bb 179

(所影响的行数为 9 行)


在上面例中我们看到,以B分类排序,C是从小到大,如果C从大到小排序,即下面结果:
px a b c
1 8 aa 168
2 9 aa 153
3 7 aa 152
4 6 aa 120
1 7 bb 179
2 6 bb 169
3 5 bb 159
4 8 bb 149
5 9 bb 139

declare @tab table(a int,b varchar(2),c int)

insert @tab values(7,'aa',153)
insert @tab values(9,'aa',152)
insert @tab values(6,'aa',120)
insert @tab values(8,'aa',168)
insert @tab values(5,'bb',159)
insert @tab values(7,'bb',179)
insert @tab values(8,'bb',149)
insert @tab values(9,'bb',139)
insert @tab values(6,'bb',169)

select * from @tab

select px=(select count(1) from @tab where b=a.b and c>a.c)+1 , a,b,c from @tab a
order by b , c desc

px a b c
----------- ----------- ---- -----------
1 8 aa 168
2 7 aa 153
3 9 aa 152
4 6 aa 120
1 7 bb 179
2 6 bb 169
3 5 bb 159
4 8 bb 149
5 9 bb 139

(所影响的行数为 9 行)

hhhdyj 2006-11-28
  • 打赏
  • 举报
回复
刚才写错了,应该是按时间派,刚才取得是温度最大的
SELECT 温度, 批次号
FROM 温度记录 T
WHERE (SELECT COUNT(1) FROM 温度记录 WHERE 批次号 = T.批次号 AND 时间 >= T.时间) <=20
ORDER BY 批次号, 温度 DESC
marco08 2006-11-28
  • 打赏
  • 举报
回复
--參考
http://community.csdn.net/Expert/topic/4845/4845108.xml?temp=.9047205
caixia615 2006-11-28
  • 打赏
  • 举报
回复
select top 20* from 温度记录 order by 温度,时间
hhhdyj 2006-11-28
  • 打赏
  • 举报
回复
后面可以加order by 批次号, 温度 DESC
hhhdyj 2006-11-28
  • 打赏
  • 举报
回复
SELECT 温度, 批次号
FROM 温度记录 T
WHERE (SELECT COUNT(1) FROM 温度记录 WHERE 批次号 = T.批次号 AND 温度 >= T.温度) <=20
marco08 2006-11-28
  • 打赏
  • 举报
回复
--把表結構和數據貼出來看看
加载更多回复(1)
【DQN、PyTorch】使用深度Q网络(DQN)和非正交多址接入(NOMA)的无人机上行链路干扰管理研究(Python代码实现)内容概要:本文研究了基于深度Q网络(DQN)和非正交多址接入(NOMA)技术的无人机上行链路干扰管理方法,旨在解决无人机通信中存在的干扰问题。通过构建DQN强化学习模型,结合NOMA技术特点,对无人机上行链路的资源配与功率控制进行智能优化,从而提升通信系统的频谱效率和抗干扰能力。文中给出了完整的Python代码实现,涵盖了环境建模、状态空间与动作空间设计、奖励函数设定及DQN算法训练等关键环节,实现了在复杂动态环境下对多无人机通信干扰的有效管理。; 适合人群:具备一定机器学习与无线通信基础知识,熟悉Python编程,从事通信系统优化、强化学习应用研究的相关科研人员及研究生。; 使用场景及目标:①应用于无人机密集通信场景中的上行链路干扰协调;②为基于深度强化学习的无线资源管理提供可复现的技术方案;③推动NOMA与AI融合在6G空地一体化网络中的发展。; 阅读建议:建议读者结合PyTorch框架深入理解DQN网络结构实现细节,重点关注状态特征选取与奖励机制设计对收敛性的影响,并通过调试代码掌握算法在不同场景下的泛化能力。
内容概要:本文对下垂控制与虚拟同步机(VSG)两种并网型(grid-forming)控制策略进行了系统性的性能对比研究,并基于Simulink仿真平台构建了完整的系统模型,开展动态响应析。研究深入探讨了两种控制策略在频率调节、有功/无功功率配、电压支撑能力以及应对负载突变、电网扰动等非理想工况下的控制特性差异。内容涵盖控制原理建模、关键参数设计、稳定性析及仿真验证全过程,重点剖析了VSG在惯性和阻尼模拟方面的优势,以及下垂控制在简单性与可扩展性上的特点,旨在为构网型逆变器在微电网、新能源并网及新型电力系统中的工程应用提供理论支撑与选型依据。; 适合人群:具备电力电子、自动控制理论及新能源并网技术基础知识的研究生、科研人员及相关领域的工程技术人员。; 使用场景及目标:①深入理解下垂控制与虚拟同步机的核心控制原理及其在Simulink中的实现方法;②掌握并对比两者在动态响应速度、系统稳定性、抗扰动能力及工况适应性等方面的性能差异;③为微电网、储能系统、布式电源等场景下的控制器设计、参数优化与技术路线选择提供仿真验证手段与决策支持; 阅读建议:建议结合提供的Simulink仿真模型进行动手实践,重点关注控制器参数(如VSG的转动惯量、阻尼系数,下垂系数等)对系统性能的影响,通过对比不同扰动工况下的仿真波形,深刻领会两种策略各自的适用边界与优缺点。

34,876

社区成员

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

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