根据其他列选择列中的值

Posted

技术标签:

【中文标题】根据其他列选择列中的值【英文标题】:Selecting values in columns based on other columns 【发布时间】:2020-03-07 14:26:35 【问题描述】:

我有两张表,信息和交易。 信息看起来像这样:

customer ID Postcode 1 ABC 123 2 DEF 456

交易看起来像这样:

customer ID day frequency 1 1/1/12 3 1 3/5/12 4 2 4/6/12 2 3 9/9/12 1

我想知道每个邮政编码在哪一天出现的频率最高。

我知道如何从两个不同的表中引用,但我不太确定如何根据它们的值将多个列引用到其他列。

输出应该是这样的:

customer ID postcode day frequency 1 ABC 123 3/5/12 4 2 DEF 456 4/6/12 2 3 GHI 789 9/9/12 1

等等。

【问题讨论】:

两个,不是数据库。 “星期几”与您的问题有什么关系? 谢谢,已修改。我的意思是一天 【参考方案1】:

您可以使用相关子查询进行过滤:

select
    i.*,
    t.day,
    t.frequency
from info i
inner join transactions t on t.customerID = i.customerID
where t.frequency = (
    select max(t.frequency)
    from info i1
    inner join transactions t1 on t1.customerID = i1.customerID
    where i1.postcode = i.postcode
)

或者,如果你的 RBDMS 支持窗口函数,你可以使用rank():

select *
from (
    select
        i.*,
        t.day,
        t.frequency,
        rank() over(partition by i.postcode order by t.frequency desc)
    from info i
    inner join transactions t on t.customerID = i.customerID
) t
where rn = 1

【讨论】:

以上是关于根据其他列选择列中的值的主要内容,如果未能解决你的问题,请参考以下文章

根据c =字符数替换列中的值

从数据库列和 C# 中的 textBox 值中扣除值,扣除后的值必须存储在新列中

QTableview:根据其他列中的值显示特定列中的数据

Numpy - 如何根据其他列中的二进制值计算列中的值?

根据其他列中的条件更新一列中的值

遍历 pandas 行并根据其他列中的值设置列值