sql - sql求和2列值并按3列对记录进行排序
问题描述
我有列 - ip、端口、对、pair_status、长度、length_to_fault、add_date。我需要按端口对所有内容进行排序,每个端口至少有一对(A,B,C,D)。排序后,我需要进行更多排序 - 我需要在确切的端口对每一对进行排序。
目前我有选择它可以做我需要的一切,但只是有一个长度。
我想更改这个片段,以便它可以检查 - 如果长度 = N/A,那么它需要 length_to_fault,如果 length_to_fault = N/A,那么它需要长度。我的想法是将这 2 列合并为 1。此外,每条记录仅在一列上具有值(它可以是长度或 length_to_fault)。到目前为止,我有这个-
Select d.*
from (select d.*, lead(length::float) over (partition by port_nbr, pair order by d.add_date) as next_length
from diags d
where length !='N/A'
) d
这工作得很好,但是有些记录的长度为 N/A,但值在 length_to_fault 之内,所以这个选择不会采用该记录。有没有办法编辑这个片段以包含 length_to_fault 呢?也许我可以将这两列合二为一?此外,length/length_to_fault 是数据库中的字符,因此我必须将其更改为在此选择中浮动。
解决方案
您可以使用case
表达式:
Select d.*
from (select d.*,
lead( (case when length <> 'N/A' then length else length_to_fault end)::float) over (partition by port_nbr, pair order by d.add_date) as next_length
from diags d
) d
推荐阅读
- c - OpenCL内核中的log2函数?
- mysql - 气流数据库设置
- java - MongoDB 过滤数据聚合 Spring boot
- flutter - Flutter await 在继续之前不等待
- regex - 通过使用生成文件的循环删除空格并替换文件名中的非 ASCII 字符
- python - Kinesis Firehose 在多个区域中的相同流
- excel - Excel 搜索 - 多个结果
- ruby-on-rails - 如何与 Spree::User 建立关系?
- python - python如何在模块路径和成员函数之间消除歧义
- python - 具有不同标准差和每行平均值的 Numpy 数组