gpt4 book ai didi

sql - 在 PostgreSQL 中,如果没有则获取最小值

转载 作者:行者123 更新时间:2023-11-29 14:10:59 26 4
gpt4 key购买 nike

抱歉,如果标题与实际问题不符。我不确定如何表达这一点。

在 Postgres 中,我有可以在一个站的用户。站点编号为 1 到 5。我有一个表 users,它有一列 station。如果用户在某站,station值为站号,否则为NULL。以下是我如何找到每个站的用户数量:

SELECT station, count(users) AS users
FROM users
WHERE station IS NOT NULL
GROUP BY station ORDER BY station;

这会产生:

 station | users 
---------+---------
1 | 4
2 | 1
3 | 1

但这不是真的是真的。站点 4 和 5 上的用户为零。我该如何解决这个问题?我想将此查询用作计算其他内容的 View ,但我需要那里的所有站点。据我所知,我不需要车站表:我不会在其他任何地方使用它们。

那么我该如何计算未使用的站点呢?我真的需要为他们创建一个表并从用户表中引用站表,还是有更简单的方法?

最佳答案

假设您有一个表 stations,您可以使用 left join 来处理它:

SELECT s.station, count(u.station) AS users
FROM stations s LEFT JOIN
users u
ON s.station = u.station
GROUP BY s.station
ORDER BY s.station;

没有这样的表,可以使用generate_series():

SELECT s.station, count(u.station) AS users
FROM generate_series(1, 5) as s(station) LEFT JOIN
users u
ON s.station = u.station
GROUP BY s.station
ORDER BY s.station;

关于sql - 在 PostgreSQL 中,如果没有则获取最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609102/

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