问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求解一个聚合函数的Sql语句!!!

发布网友 发布时间:2022-04-11 15:40

我来回答

3个回答

热心网友 时间:2022-04-11 17:10

游标时最好理解的方案,简单的SQL也可以完成你这个需求,但比较绕。


游标的解决方案:

DECLARE @id int, @qty int, @totalCount int, @targetVal int

SET @totalCount = 0
SET @targetQty = 500

DECLARE test_cursor CURSOR
    FOR SELECT * FROM test1 order by id
OPEN test_cursor
FETCH NEXT FROM  test_cursor
into @id, @qty

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @totalCount = @totalCount + @qty
    
    IF (@totalCount >= @targetQty)
    BEGIN
         GOTO GOODEND
    END
    
    -- Get the next record.
    FETCH NEXT FROM test_cursor 
    INTO @id, @qty
END

GOODEND:
IF (@totalCount >= @targetQty)
BEGIN
PRINT 'Total quality is ' + CAST(@totalCount AS VARCHAR)
PRINT 'The current id is ' + CAST(@id AS VARCHAR)
END
ELSE
    PRINT 'The quality of all record is ' + CAST(@totalCount AS VARCHAR)

CLOSE test_cursor;
DEALLOCATE test_cursor;

 

简单的SQL方案:

select id from(
  SELECT top 1 *
    FROM test1
   WHERE id <= ( SELECT TOP 1
                        t1.id
                   FROM test1 t1
                   LEFT JOIN test1 t2 
                     ON t1.id >= t2.id
                  GROUP BY t1.id
                 HAVING SUM(t2.qty) >= 500
                  ORDER BY id
                 )
   order by id desc) t3

上面的语句会列出那个Sum(Qty) >= 500 的行的id。

热心网友 时间:2022-04-11 18:28

这个语句不好实现吧,弄一张新表吧,在这个表里弄个触发器 ,以后没新增一条数据 就自动保存这个汇总值

热心网友 时间:2022-04-11 20:02

select id from 表名 where qty=500;追问不是qty的值等于500,是汇总qty的值=500,sum函数。

sql 语句中那些是聚合函数?

insert into test_group values(1,1001);insert into test_group values(1,1002);insert into test_group values(1,1003);insert into test_group values(1,1004);insert into test_group values(1,1005);3、查询表中所有记录,select t.*, rowid from test_group t,4、编写sql,分别求聚合...

sql返回第n大的数的聚合函数类似max、min

1. Oracle select rownum rw,tt.* from (select unique t.myField from mytable t order by t.myField desc) tt where rw = 3;2. SQL Server select row_number() rw,tt.* from (select unique t.myField from mytable t order by t.myField desc) tt where rw = 3;

sql 中怎样用SQL语句来实现为表添加一行求其列的平均值,也就是问聚合...

列 B C D 值 o p q x y z 我们求D列的平均值 select B,avg(D) FROM A group by B

oracle 语句,聚合函数。求解!

第一个语句,应该不用gruop by 也可以执行。但是,在这里使用应该是为了分门别类的目的而是用的。否则,的话是得到一个总体的Count。 第二句,因为 qyw_year, qyw_type 这两个列是单的(即不是聚合的),而你的查询中又有聚合函数Sum,同时,SQL中,只能全是聚合,或全是单的,不能两者同时查...

2个表的SQL语句,条件中有聚合函数

1.SUM(A) 表示B表中存在该记录的条数。假设关联的字段的都是ID,显示的字段为AF 则可以写成 SELECT AF FROM A INNER JOIN B ON A.ID=B.ID GROUP BY A.ID HAVING COUNT(B.ID)&gt;100 2.如果SUM(A)表示B表中某个字段的和 SELECT AF FROM A INNER JOIN B ON A.ID=B.ID GROUP BY A....

懂Access表的进来一下,多表连接聚合函数,谢谢

要实现你的要求,可以使用SQL的连接(JOIN)和聚合函数(Aggregate Functions)。这里使用的是COUNT函数和GROUP BY子句。以下是一个可能的SQL查询:sql复制代码 SELECT S.name AS业务员,P1.name AS商品名1,P3.name AS商品名3,P8.name AS商品名8,SUM(O.money) AS金额 FROM sales S LEFT JOIN ...

sql语句中group by,聚合函数的使用。单行子查询返回多行怎么办?求解答...

(1)联合查询(oracle写法,如为其他数据库自行修改,这里只提供思路)select table.id,table.XXXXX,table.XXXXX,table.caption,table.XXXXX from table,(select id,max(caption) max_cap from table group by id) b where table.id=b.id and table.caption=b.max_cap (2)组合查询 select * from...

Mybatis-Plus——sum聚合函数 及 按日期查询并求和

Mybatis-Plus中使用sum聚合函数时,SQL语句需确保as后面的变量与实体类中声明的完全一致。通过@@TableField(exist = false)注解,即使字段在表中不存在,亦能进行聚合操作。例如,通过queryWrapper.getOne()方法,根据Wrapper查询单条记录。在实现按日期查询并求和的功能时,通常使用Mybatis-Plus简化代码,...

关于SQL语句,谢谢!

as 总空程 ,sum(QJZ)as 总桥架子 ,sum(XSH) as 总小时,sum(YJ) as 总运距 from t_glgz group by SJ where ND="'+nd+'" and YD="'+yd+'" and LB="'+lb+'"'上面的Having换成Where,Having只限于包含聚合函数的条件如:having sum(tsh) &gt; 200 而不是这样的情况应该用where ...

FlinkSQL聚合函数(Aggregate Function)详解

WeightedAvg(聚合函数)的accumulate方法有三个输入参数,第一个是WeightedAvgAccum accumulator,另外两个是用户自定义的输入:输入的值ivalue和输入的权重iweight。尽管retract()、merge()、resetAccumulator()方法在大多数聚合类型中都不是必须实现的,但在示例中提供了它们的实现,并且定义了getResultType()...

sql语句聚合函数 聚合函数不可以用在下列哪个语句中 sql聚合函数的用法 sql中的聚合函数 mysql中的聚合函数 属于聚合函数的是 mysql聚合函数使用 sql语句like多个值 oracle聚合函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...的电器到成都,请问一下,那个航空快一些呀,多少/公斤? 前女友和我分手一年之后,出车祸死了,我很高兴,这种心理是不是不... 为什么听到前女友去世的消息,我竟然放声大哭,她很爱我,是我对她腻了... 兰州银行充天然气必须要本行卡吗 从服饰礼仪看中西方文化差异 为什么iqoo11评价那么低? 相机快门线的运用范围 快门线是干什么用的 请问这是什么虫子 还挺硬的 在楼房内 整理箱上面发现的 屋内有木质上... 请问这是什么虫子?家里抓到,2cm左右。坐标北京,昌平,冬季12月,楼房... 怎么在SQLServer计算列和平均值 sqlserver聚合函数可以使用分页吗 求教SQL server 聚合函数问题 sqlserver聚合函数是不是效率很低 求一个oracle 去重复记录完整sql语句或者用 hibnate+ distinct 的完整例子 joint venture是什么意思 distinct triplets什么意思 如何distinct 只对一个字段有用,同时查出其他字段 针对某个字段distinct,该怎么做 关于SQL中Distinct的疑问,如何返回所有的字段? SQL 语句提问 distinct count的疑问。 sql语句 distinct 查询疑问 T-SQL中DISTINCT 命令的疑问 用sql语句SELECT *,ROW_NUMBER() OVER(PARTITION BY a ORDER BY a ASC) AS NUM FROM 十二月 怎么在SQL2000里实现row_number()的功能! sql server 如何给相同的记录编上一定格式的编号呢 SQL server PARTITION BY 是什么意思 SQL数据附加失败错误3456求救 sql服务无法启动,错误代码3417,麻烦高手解决下,3Q~~ Windows不能在本地计算机启动SQL Server (MSSQLSERVER),并参与特定服务错误代码3417之类的的提示 mysql数据库怎么导出到另一个数据库中 SQL数据库怎样将几行的数据复制到到另外一个数据库里 为什么我用sqlloader从文本往oracle里导数时,有个文字很多的字段老提示“数据文件的字段超出最大长度”? SQL LOADER处理换行数据的问题 sqlprofiler 安装时候的错误,请高手指教 sqlloader插入数据触发器为什么没有生效? java连接sql server数据库时出现错误 SqlLoader怎么使用 Oracle数据库不在本地怎么使用sqlloader 使用sqlloader怎样导入txt sql loader导入数据如何把上传文件夹名作为 java或者其框架怎么使用sqlloader 和imp mysql中可以用sqlloader吗 求助sqlserver服务器压力问题 [HP]时间悖论 全文+番外txt sqlserver如何查看哪个进程堵塞 怎么在存储过程用事务避免并发 sybase把表锁住了,请问怎么解锁 sqlserver中查看有的系统视图必须加sys,有的加不加都行,求解? SQL为什么只支持2000