gpt4 book ai didi

sql - 根据规则更新列值

转载 作者:行者123 更新时间:2023-12-03 02:26:51 25 4
gpt4 key购买 nike

我有一个包含 value 和 colrank 列的表,value 是特定 id 的值,rank 是整个记录中特定 id 的百分比。

我想更新 2 个条件的记录,例如

  1. 如果 colrank 大于 0.95,则将值更新为最接近的 colrank 各自值 <=0.95 的值
  2. 如果 colrank 小于 0.5,则将值更新为最近值 colrank 相应值 >=0.5 的值

    declare @tbl table (id int , value float , colrank float );

    insert into @tbl
    values(1,10, 0.52),
    (2,11, 0.48),
    (3,18, 0.94),
    (4,22, 0.96);

    select * from @tbl;

我的代码如下,但我不满意,因为我多次使用同一张表。请建议最好的方法是什么。

;WITH CTE AS 
(
SELECT MAX(colrank ) high
FROM @tbl
where colrank <= 0.95
),
cte1 as (
SELECT min(colrank ) low
FROM @tbl
where colrank <= 0.5
)

select * from cte ,cte1

最佳答案

您可以使用条件聚合来避免同一数据集下的两次迭代:

SELECT MAX(CASE WHEN colrank <= 0.95 THEN colrank END) high,
MIN(CASE WHEN colrank <= 0.5 THEN colrank END) low
FROM @tbl;

DEMO

关于sql - 根据规则更新列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49668860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com