-1

我正在为 SQLite 使用数据库浏览器。如果 SQLite 是问题,请随意推荐另一个免费的 GUI 或使用 SQL 的软件。

我需要从 percent_rank() 函数中获取值并将它们用于以后的计算。这可以通过将这些值导出到新表或将它们附加到现有表来完成(首选)。我认为不可能引用这些计算的列。我不能直接填充这些列,因为 UPDATE SET 函数不能与 percent_rank() 函数一起使用。

我已经根据这个问题尝试了以下代码。该代码用于显示计算值(Loan_def_rank),但原始数据未修改。

SELECT a.entity_uuid,
    a.name,
    b.Loan_def_Rank

FROM data as a INNER JOIN
    (SELECT entity_uuid,
    percent_rank() OVER (PARTITION BY college_type ORDER BY loan_def_rate DESC) 
    AS Loan_def_Rank,
    FROM data GROUP BY entity_uuid) as b
    ON a.entity_uuid = b.entity_uuid;
4

1 回答 1

0

您不应该存储这些派生信息。我建议改用视图:

create view vdata as 
select 
    d.*,
    percent_rank() over (partition by college_type order by loan_def_rate desc) as loan_def_rank
from data d

该视图包含原始表的所有列,以及包含计算值的另一列。您可以像查询表一样查询视图。

好处是您对数据始终拥有最新的视角,无需任何维护成本(与实际存储数据相反,这需要您手动保持最新)。

于 2020-07-16T16:49:14.640 回答