SQL查询:要求明细记录里边总额要大于等于并最接近指定的数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询:要求明细记录里边总额要大于等于并最接近指定的数值相关的知识,希望对你有一定的参考价值。

有一张表,里边有个待收本金的字段。 想查出这个表一些记录,查出来的记录满足 统计待收本金的总额大于等于并最接近指定的值

假设输入的值90, 假设这张表有20条记录 ,我统计17条是88 统计18条是92 统计到19条是98 所以我应该将18条记录查出来

参考技术A --可以统计出相同值的记录
WITH tmp AS
(SELECT t1.*,dense_rank() OVER(ORDER BY 统计字段 ASC) rank_asc FROM table_name t1
WHERE 统计字段 >= 90)
SELECT * FROM tmp WHERE rank_asc = 1追问

需要建立临时表吗?

追答

不需要,在oracle数据库下执行

追问


统计金额没有体现 最接近也没体现

追答

你等等,我给你写一下

参考技术B select * from tableName where (select sum(price) from tableName)>输入值;

可以统计出来结果,但是你要判断条数,这个真不好解决

BigQuery SQL / GIS:扩展半径直到计数大于/等于“N”

【中文标题】BigQuery SQL / GIS:扩展半径直到计数大于/等于“N”【英文标题】:BigQuery SQL / GIS: Extend Radius Until Count Is Greater Than / Equal To 'N' 【发布时间】:2020-09-21 19:14:38 【问题描述】:

我有一个非常特殊的查询要写。在 PostGIS / BigQuery 中,我有一个 point。我可以通过增量来缓冲这一点,并对属于这一点的唯一记录执行聚合查询,例如count(distinct())。一旦计数达到某个阈值,我想返回地理对象的输入值,即。它的半径或直径。这个问题可以表述为“在我点击 'n' [ids] 之前,我必须继续出去多远?”

精细地增加缓冲区或半径的值将非常缓慢且昂贵。谁能想到一个很好的方法来缩短它并提供一个快速提供很好答案的解决方案(用 BQ 或 PSQL 术语!)?

可用的 GIS 功能:

st_buffer() st_dwithin()

谢谢!

【问题讨论】:

【参考方案1】:

您必须按距离排序并保留 N 个最近的点。 <-> 运算符将使用空间索引。

SELECT *
FROM pointLayer p
ORDER BY p.geometry <-> st_makePoint(...)
LIMIT 10; --N

【讨论】:

【参考方案2】:

你不需要精细地增加半径——我宁愿把它加倍,或者甚至增加 10 倍,一旦你有足够多的不同记录,就取 N 个最近的记录。

我已经使用 BigQuery 脚本解决了类似的问题(N=1,但对于任何 N 都可以轻松修改,只需使用 LIMIT N 而不是 LIMIT 1 并修改停止条件): https://medium.com/@mentin/nearest-neighbor-using-bq-scripting-373241f5b2f5

【讨论】:

以上是关于SQL查询:要求明细记录里边总额要大于等于并最接近指定的数值的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery SQL / GIS:扩展半径直到计数大于/等于“N”

springMVC怎么把结果集写入Excel并导出

SQL查询最接近某一值的数据

sql表中如何表示大于0小于100?

统计每门课程的选课人数和平均分,结果只显示平均分大于等于80的记录(使用T-SQL语句进行单表查询:)

SQL怎么查询出字段中等于某一个数字的记录?