简单问题不会做

九斤半 2007-10-12 09:51:19
CREATE TABLE A(ID NCHAR(5),QTY INT)
INSERT A(ID,QTY) SELECT 'A0001',457
INSERT A(ID,QTY) SELECT 'A0002',789
INSERT A(ID,QTY) SELECT 'A0003',145
INSERT A(ID,QTY) SELECT 'A0002',877
INSERT A(ID,QTY) SELECT 'A0003',123
INSERT A(ID,QTY) SELECT 'A0002',756
INSERT A(ID,QTY) SELECT 'A0007',999
INSERT A(ID,QTY) SELECT 'A0006',577
INSERT A(ID,QTY) SELECT 'A0005',478

--SELECT * FROM A
--SELECT DISTINCT ID FROM A
SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)


-- 用时2秒
SELECT A.* FROM A JOIN (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))I ON A.ID=I.ID
-- 要求一语句,得到除TOP 2 ID 以外所有ID的明细记录,如何做?


DROP TABLE A
...全文
239 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
wangtiecheng 也是这意思。想多了要注意休息,
回复老出不来,唉新版问题还是我机器的问题?江民对它感兴趣
dawugui 2007-10-12
  • 打赏
  • 举报
回复
看了看,还是not in 的好.
我用过两表各20多万的not in 的操作,是oracle 数据库,服务器配置较高.花时间3-5分钟.
如果非要整个几百上千万的记录来not in,那就爽歪歪了.
九斤半 2007-10-12
  • 打赏
  • 举报
回复
不知不为过,不学就是错! 先回帖,没注意看到...谢谢大家。
九斤半 2007-10-12
  • 打赏
  • 举报
回复
:)

wgzaaa的MS可以了,我一直在想如何得到其余的ID记录集,没这样想过。
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
left join要比not in 效率高

在Access中,这一点体现的尤其明显,用not in 数据量一大,就没有响应了。
九斤半 2007-10-12
  • 打赏
  • 举报
回复
呵呵,是啊,关联很快,就是不知道如何得到除此TOP 2 ID以外的ID的明细记录



SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)) -- 这一句是此TOP 2 ID的记录,OK。

????????????????????????????????????????????????????? -- 另一句不会写。
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
--try
SELECT A.* FROM A left JOIN (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))I ON A.ID=I.ID where i.id is null
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
不用not in 就用关联,如:

select A.*
from A
left join B on a.id=b.id
where b.id is null
wgzaaa 2007-10-12
  • 打赏
  • 举报
回复
这样不行?
SELECT A.* FROM A where id not in (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))
九斤半 2007-10-12
  • 打赏
  • 举报
回复
不知不为过,不学就是错!

我要求除此TOP 2 ID以外的ID的明细记录,

not in 我用过了,太慢。
OracleRoob 2007-10-12
  • 打赏
  • 举报
回复
CREATE TABLE A(ID NCHAR(5),QTY INT)
INSERT A(ID,QTY) SELECT 'A0001 ',457
INSERT A(ID,QTY) SELECT 'A0002 ',789
INSERT A(ID,QTY) SELECT 'A0003 ',145
INSERT A(ID,QTY) SELECT 'A0002 ',877
INSERT A(ID,QTY) SELECT 'A0003 ',123
INSERT A(ID,QTY) SELECT 'A0002 ',756
INSERT A(ID,QTY) SELECT 'A0007 ',999
INSERT A(ID,QTY) SELECT 'A0006 ',577
INSERT A(ID,QTY) SELECT 'A0005 ',478

--SELECT * FROM A
--SELECT DISTINCT ID FROM A
SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY)


-- 用时2秒
SELECT *
from A as t
where id not in (SELECT TOP 2 ID FROM A GROUP BY ID ORDER BY SUM(QTY))
-- 要求一语句,得到除TOP 2 ID 以外所有ID的明细记录,如何做?


DROP TABLE A
dawugui 2007-10-12
  • 打赏
  • 举报
回复
啥意思?
内容概要:本文围绕基于Basisformer模型的时间序列锂离子电池SOC(State of Charge,荷电状态)预测展开研究,利用PyTorch框架实现深度学习模型的构建与训练。通过将历史充放电数据作为输入,Basisformer能够有效捕捉电池状态的动态变化特征,提升SOC预测精度。文中详细介绍了模型结构设计、数据预处理流程、训练策略及实验结果分析,并与传统方法进行对比,验证了该方法在复杂工况下的优越性与鲁棒性。该研究不仅展示了Basisformer在时序建模中的潜力,也为电池管理系统提供了高精度的状态估计解决方案。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉PyTorch框架,从事电池管理系统、新能源汽车或智能预测方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于电动汽车、储能系统等领域的电池SOC高精度实时估算;②为电池健康管理(BMS)提供可靠的状态输入;③推动深度学习在时间序列预测中的实际落地,提升现有预测模型的泛化能力与稳定性; 阅读建议:建议读者结合标题为【锂电池SOC估计】【PyTorch】基于Basisformer时间序列锂离子电池SOC预测研究(python代码实现)的资源,重点研读所提供的Python代码,深入理解数据处理方式与模型网络结构的设计思路,尝试调整超参数以观察对预测性能的影响,从而全面掌握Basisformer在时序建模中的优势、适用边界及工程化实现路径。

34,876

社区成员

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

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