【问题标题】:Renaming Inner Join results in SQL在 SQL 中重命名内部联接结果
【发布时间】:2022-11-13 01:44:08
【问题描述】:
As the title says, I am trying to create a column with the names of variables counted from an interjoin.

This is the code I used:

select
    count(customer.age) from customer
    inner join services on customer.customer_id = services.customer_id
    where age > 64
    GROUP BY 
    services.internetservices;

This is the output as internetservices has 3 data variables.
 
"count"
1155
1485
740

如何创建一个包含变量名称(值?)的列?谢谢你的帮助!我对 SQL 很陌生,希望一切都尽可能简单!

【问题讨论】:

  • 我不明白这个问题。您正在显示计数,但您不知道哪个数字指的是哪个互联网服务。所以,select services.internetservices, count(*) as customers from ...。这是否已经回答了您的问题?
  • 附带说明:将人员年龄存储在表格中很奇怪,因为您必须每天检查数据才能调整年龄。您应该存储生日,以便在需要时计算年龄。

标签: postgresql count inner-join


【解决方案1】:

我不知道,以下查询是否涵盖了您要问的内容。对于每项 Internet 服务,您希望计算 64 岁以上的客户。

为了知道一个人的年龄,你不应该存储年龄,因为一个人的年龄每天都在变化。而是存储他们的生日。

您计算每个 Internet 服务的客户,因此从服务表中选择然后加入客户似乎很自然。

可能存在没有任何 64 岁以上客户的 Internet 服务。您想以零计数显示它们吗?然后外部加入客户。

SELECT s.internetservices, count(c.customer_id) 
FROM services s
LEFT OUTER JOIN customer c ON c.customer_id = s.customer_id
                          AND age(c.birthday) >= INTERVAL '65 years'
GROUP BY s.internetservices
ORDER BY s.internetservices;

这计算了 65 岁及以上的客户,我认为这是您想要做的。

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2015-06-25
    • 2020-05-30
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多