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

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

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

谁可以解决,马上给分。

msn:tspbwf@hotmail.com




...全文
435 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)
内容概要:本文围绕基于蜣螂优化算法(DBO)的无线传感器网络(WSN)覆盖优化问题展开研究,提出了一种创新性的智能优化解决方案,并提供了完整的Matlab代码实现。研究首先析了传统WSN覆盖优化中存在的覆盖率低、能耗不均等问题,随后引入蜣螂优化算法这一新型群体智能算法,通过模拟蜣螂的生物行为机制,构建了适用于传感器节点部署优化的数学模型。文中详细阐述了算法的设计思路、实现步骤及其在提高网络覆盖率、延长网络生命周期方面的有效性,同时通过仿真实验与其他主流优化算法进行了对比,验证了所提方法的优越性。; 适合人群:具备一定优化算法基础和Matlab编程能力,从事通信工程、物联网、智能优化等相关领域的研究生及科研人员。; 使用场景及目标:①解决无线传感器网络中节点部署不合理导致的覆盖盲区问题;②提升网络整体覆盖性能与资源利用效率;③为智能优化算法在实际工程中的应用提供可复现的研究案例和技术参考。; 阅读建议:建议读者结合文中的Matlab代码进行实践操作,重点关注算法参数设置、适应度函数设计及仿真结果析部,同时可尝试将该算法迁移至路径规划、资源调度等其他优化场景中进行拓展研究。
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 在信息技术领域,特别是软件编程行业,微软公司推出的集成开发环境(IDE)Visual Studio,凭借其卓越的功能和广泛的适用范围,成为了众多程序员的常用工具。不过,在实际操作期间,用户可能会遭遇各种挑战,其中一种较为普遍的挑战是“Visual Studio遭遇了异常情况,这或许与某个附组件有关”。本文将详细研究这一现象的成因、潜在后果以及最终的应对措施。 ### 原因剖析 Visual Studio通过支持多种插件和附组件来扩展其功能,这些组件通常由第三方开发者设计,旨在为用户提供更多个性化和专业化的工具。然而,这些插件的质量良莠不齐,部可能未经过充的测试或与特定版本的Visual Studio存在兼容性难题,从而在执行时引发异常。异常的出现可能源于以下几个因素: 1. **代码缺陷**:若附组件中的代码存在逻辑问题或资源管理不当,就可能导致运行时异常。 2. **资源竞争**:多个插件同时占用相同的资源(例如内存、文件句柄等),可能会产生资源冲突,进而触发异常。 3. **依赖不匹配**:插件可能需要特定版本的库或框架,如果系统中安装的版本不一致,也可能导致异常。 4. **安全隐患**:部插件可能存在安全漏洞,一旦被恶意利用,可能会导致更严重的问题,包括但不限于异常崩溃。 ### 后果析 当Visual Studio遇到由附组件引发的异常时,不仅会中断当的工作进程,降低开发效能,还可能带来以下潜在风险: 1. **数据遗失**:若异常发生在保存操作之,可能会导致未保存的工作内容遗失。 2. **稳定性减弱**:频繁的异常会导致Visual Stud...

34,876

社区成员

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

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