-
-
亿信小白 初学数据Lv2
发表于2020-12-1 10:40
悬赏1
已解决
楼主
第一张图是设置浮动表元,并按照降序排列,第二张图是排序结果
然后我设置取前十个数,结果变成升序排列,且没有取10条数据
有人遇到这种情况吗?应该怎么改?


然后我设置取前十个数,结果变成升序排列,且没有取10条数据


有人遇到这种情况吗?应该怎么改?
最佳答案
本帖最后由 xxxl 于 2020-12-1 15:28 编辑
用条件分组的方式只取到其中某一个数据呢您那有没有考虑过在数据库表中再加一个字段用来识别不同数据也就是主键的哪种效果呢,然后再根据主键浮动
亿信小白 发表于 2020-12-1 15:05
那这样就只有一个问题了,排序后的结果是分组后求和数据,把数量给求和了下图是浮动设置
下图是计算结果 ...
用条件分组的方式只取到其中某一个数据呢您那有没有考虑过在数据库表中再加一个字段用来识别不同数据也就是主键的哪种效果呢,然后再根据主键浮动
14个回答
xxxl 发表于 2020-12-1 11:33
在这里看 最好把加了和没加top的详情都截下来
拆分浮动块sql:
2020-12-01 11:35:48.113 开始计算报表:B75081(内存情况:FREE=2.3G TOTAL=4G MAX=7.1G)
2020-12-01 11:35:48.115 引用的主题表: F_B08LYSQYPCFXYGJMXC1783, F_DM_QYPC_PCQYMXW1737
2020-12-01 11:35:48.115 查询的数据级次范围:没有做限制。
================GRID3================
2020-12-01 11:35:48 在并行计算线程池中,开始计算表格GRID3的第1个分析区(0.0.3.2)!
2020-12-01 11:35:48 正在生成SQL...
2020-12-01 11:35:48 计算表格GRID3
2020-12-01 11:35:48 生成SQL耗时27毫秒
2020-12-01 11:35:48 当前连接池为【ABISYS】,执行SQL:
select * from ( select a.YDL as C2,b.YHMC as B2,a.DLTJZQ as A2
from f_b08lysqypcfxygjmxc1783 a
inner join f_dm_qypc_pcqymxw1737 b
on (a.YHBH = b.YHBH)
where ((a.DLTJZQ = '2020年10月') AND ((a.YDL<>0 or a.YDL is null)))
group by a.DLTJZQ,b.YHMC,a.YDL
order by a.YDL desc ) as temp_ limit 1000
2020-12-01 11:35:48 SQL执行完毕,查询出73条数据,耗时:77毫秒(开始时间:2020-12-01 11:35:48.124;结束时间:2020-12-01 11:35:48.201);其中生成SQL耗时27毫秒;初始获取连接耗时:0毫秒;查询准备总耗时:2毫秒;执行查询sql耗时:48毫秒;
2020-12-01 11:35:48 在并行计算线程池中,完成计算表格GRID3第1个分析区(0.0.3.2)!
================GRID3 END================
2020-12-01 11:35:48.210 执行查询耗时98毫秒。(内存情况:FREE=2.3G TOTAL=4G MAX=7.1G)
2020-12-01 11:35:48.240 构造结果表耗时30毫秒。
2020-12-01 11:35:48.241 计算“B75081”耗时129毫秒。(内存情况:FREE=2.3G TOTAL=4G MAX=7.1G)
未拆分浮动块:
2020-12-01 11:37:10.001 开始计算报表:B75081(内存情况:FREE=1.8G TOTAL=4G MAX=7.1G)
2020-12-01 11:37:10.003 引用的主题表: F_B08LYSQYPCFXYGJMXC1783, F_DM_QYPC_PCQYMXW1737
2020-12-01 11:37:10.003 查询的数据级次范围:没有做限制。
================GRID3================
2020-12-01 11:37:10 在并行计算线程池中,开始计算表格GRID3的第1个分析区(0.0.3.2)!
2020-12-01 11:37:10 正在生成SQL...
2020-12-01 11:37:10 计算表格GRID3
2020-12-01 11:37:10 生成SQL耗时16毫秒
2020-12-01 11:37:10 当前连接池为【ABISYS】,执行SQL:
select * from ( select a.YDL as C2,b.YHMC as B2,a.DLTJZQ as A2
from f_b08lysqypcfxygjmxc1783 a
inner join f_dm_qypc_pcqymxw1737 b
on (a.YHBH = b.YHBH)
where ((a.DLTJZQ = '2020年10月') AND ((a.YDL<>0 or a.YDL is null)))
group by a.DLTJZQ,b.YHMC,a.YDL
order by a.YDL desc ) as temp_ limit 1000
2020-12-01 11:37:10 SQL执行完毕,查询出73条数据,耗时:69毫秒(开始时间:2020-12-01 11:37:10.012;结束时间:2020-12-01 11:37:10.081);其中生成SQL耗时16毫秒;初始获取连接耗时:0毫秒;查询准备总耗时:2毫秒;执行查询sql耗时:51毫秒;
2020-12-01 11:37:10 在并行计算线程池中,完成计算表格GRID3第1个分析区(0.0.3.2)!
================GRID3 END================
2020-12-01 11:37:10.097 执行查询耗时97毫秒。(内存情况:FREE=1.8G TOTAL=4G MAX=7.1G)
2020-12-01 11:37:10.127 构造结果表耗时30毫秒。
2020-12-01 11:37:10.127 计算“B75081”耗时127毫秒。(内存情况:FREE=1.8G TOTAL=4G MAX=7.1G)
亿信小白 发表于 2020-12-1 11:38
拆分浮动块sql:
2020-12-01 11:35:48.113 开始计算报表:B75081(内存情况:FREE=2.3G TOTAL=4G MAX=7.1 ...
不是拆不拆分浮动块的问题呀,是有没有加top导致数据升降序的问题,需要对比的是有没有加top10前后的数据
xxxl 发表于 2020-12-1 11:41
不是拆不拆分浮动块的问题呀,是有没有加top导致数据升降序的问题,需要对比的是有没有加top10前后的数据 ...
降序排列,没有加top10:
2020-12-01 12:10:58.821 开始计算报表:B75081(内存情况:FREE=300.1M TOTAL=4G MAX=7.1G)
2020-12-01 12:10:58.825 引用的主题表: F_B08LYSQYPCFXYGJMXC1783, F_DM_QYPC_PCQYMXW1737
2020-12-01 12:10:58.825 查询的数据级次范围:没有做限制。
================GRID3================
2020-12-01 12:10:58 在并行计算线程池中,开始计算表格GRID3的第1个分析区(0.0.3.2)!
2020-12-01 12:10:58 正在生成SQL...
2020-12-01 12:10:58 计算表格GRID3
2020-12-01 12:10:58 生成SQL耗时31毫秒
2020-12-01 12:10:58 当前连接池为【ABISYS】,执行SQL:
select * from ( select a.YDL as C2,b.YHMC as B2,a.DLTJZQ as A2
from f_b08lysqypcfxygjmxc1783 a
inner join f_dm_qypc_pcqymxw1737 b
on (a.YHBH = b.YHBH)
where ((a.DLTJZQ = '2020年10月') AND ((a.YDL<>0 or a.YDL is null)))
group by a.DLTJZQ,b.YHMC,a.YDL
order by a.YDL desc ) as temp_ limit 1000
2020-12-01 12:10:58 SQL执行完毕,查询出73条数据,耗时:83毫秒(开始时间:2020-12-01 12:10:58.835;结束时间:2020-12-01 12:10:58.918);其中生成SQL耗时31毫秒;初始获取连接耗时:0毫秒;查询准备总耗时:2毫秒;执行查询sql耗时:50毫秒;
2020-12-01 12:10:58 在并行计算线程池中,完成计算表格GRID3第1个分析区(0.0.3.2)!
================GRID3 END================
2020-12-01 12:10:58.929 执行查询耗时110毫秒。(内存情况:FREE=296.9M TOTAL=4G MAX=7.1G)
2020-12-01 12:10:58.959 构造结果表耗时30毫秒。
2020-12-01 12:10:58.959 计算“B75081”耗时140毫秒。(内存情况:FREE=295.1M TOTAL=4G MAX=7.1G)
降序排列,添加top10(结果数据变成升序排列了):
2020-12-01 12:11:11.288 开始计算报表:B75081(内存情况:FREE=260.8M TOTAL=4G MAX=7.1G)
2020-12-01 12:11:11.289 引用的主题表: F_B08LYSQYPCFXYGJMXC1783, F_DM_QYPC_PCQYMXW1737
2020-12-01 12:11:11.289 查询的数据级次范围:没有做限制。
================GRID3================
2020-12-01 12:11:11 在并行计算线程池中,开始计算表格GRID3的第1个分析区(0.0.3.2)!
2020-12-01 12:11:11 正在生成SQL...
2020-12-01 12:11:11 计算表格GRID3
2020-12-01 12:11:11 生成SQL耗时13毫秒
2020-12-01 12:11:11 当前连接池为【ABISYS】,执行SQL:
select * from ( select a.C2 as C2,a.B2 as B2,a.A2 as A2,count(b.A2) as A2_sortn
from (
select a.YDL as C2,b.YHMC as B2,a.DLTJZQ as A2
from f_b08lysqypcfxygjmxc1783 a
inner join f_dm_qypc_pcqymxw1737 b
on (a.YHBH = b.YHBH)
where ((a.DLTJZQ = '2020年10月') AND ((a.YDL<>0 or a.YDL is null)))
group by a.DLTJZQ,b.YHMC,a.YDL) a
,(
select a.YDL as C2,b.YHMC as B2,a.DLTJZQ as A2
from f_b08lysqypcfxygjmxc1783 a
inner join f_dm_qypc_pcqymxw1737 b
on (a.YHBH = b.YHBH)
where ((a.DLTJZQ = '2020年10月') AND ((a.YDL<>0 or a.YDL is null)))
group by a.DLTJZQ,b.YHMC,a.YDL) b
where (a.A2<=b.A2 and a.C2=b.C2 and a.B2=b.B2)
group by a.A2,a.B2,a.C2
having (count(b.A2)<=10)
order by a.C2,a.B2,A2_sortn ) as temp_ limit 1000
2020-12-01 12:11:11 SQL执行完毕,查询出73条数据,耗时:114毫秒(开始时间:2020-12-01 12:11:11.300;结束时间:2020-12-01 12:11:11.414);其中生成SQL耗时13毫秒;初始获取连接耗时:0毫秒;查询准备总耗时:2毫秒;执行查询sql耗时:98毫秒;
2020-12-01 12:11:11 在并行计算线程池中,完成计算表格GRID3第1个分析区(0.0.3.2)!
================GRID3 END================
2020-12-01 12:11:11.424 执行查询耗时138毫秒。(内存情况:FREE=259.4M TOTAL=4G MAX=7.1G)
2020-12-01 12:11:11.454 构造结果表耗时29毫秒。
2020-12-01 12:11:11.454 计算“B75081”耗时168毫秒。(内存情况:FREE=257.4M TOTAL=4G MAX=7.1G)
亿信小白 发表于 2020-12-1 12:13
降序排列,没有加top10:
2020-12-01 12:10:58.821 开始计算报表:B75081(内存情况:FREE=300.1M TOTAL= ...
确实在加上top10后就看不到降序的sql了,可以提供一下您的表样我本地试试吗