Sql 从多个列中计算不同的值
给定以下模式:Sql 从多个列中计算不同的值,sql,postgresql,aggregate-functions,Sql,Postgresql,Aggregate Functions,给定以下模式: id departure arrival 0 BOS LAX 1 SFO SEA 2 MIA LAX 3 RDU BOS 4 JFK DEN 5 LAX SEA 我需要计算每个机场的总发生次数。例如,BOS应为2(一次出发,一次到达) 我可以通过两个单独的查询来完成此操作: SELECT departure, COUNT(*) FROM legs GROUP BY departure ORDER
id departure arrival
0 BOS LAX
1 SFO SEA
2 MIA LAX
3 RDU BOS
4 JFK DEN
5 LAX SEA
我需要计算每个机场的总发生次数。例如,BOS应为2(一次出发,一次到达)
我可以通过两个单独的查询来完成此操作:
SELECT departure, COUNT(*) FROM legs
GROUP BY departure ORDER BY COUNT(departure) DESC
及
但我还没能在一个查询中找到解决方法。我想要如下的东西:
airport count
BOS 2
LAX 2
SEA 2
JFK 1
使用
接头执行此操作
:
select departure as airport, count(*) as count
from (select departure from legs
union all
select arrival from legs)t
group by departure
使用
接头执行此操作
:
select departure as airport, count(*) as count
from (select departure from legs
union all
select arrival from legs)t
group by departure
在两个单独的聚合上使用
完全[外部]连接
:
SELECT airport, COALESCE(d.ct, 0) + COALESCE(a.ct, 0) AS "count"
FROM (
SELECT departure AS airport, count(*) AS ct
FROM legs
GROUP BY 1
) d
FULL JOIN (
SELECT arrival AS airport, count(*) AS ct
FROM legs
GROUP BY 1
) a USING (airport)
ORDER BY "count" DESC, airport;
通过这种方式,您可以轻松地为到达和离开返回其他列,并且如果您希望选择某些机场,可以使用基表上的索引
最近的相关答复:
完全[外部]连接
:
SELECT airport, COALESCE(d.ct, 0) + COALESCE(a.ct, 0) AS "count"
FROM (
SELECT departure AS airport, count(*) AS ct
FROM legs
GROUP BY 1
) d
FULL JOIN (
SELECT arrival AS airport, count(*) AS ct
FROM legs
GROUP BY 1
) a USING (airport)
ORDER BY "count" DESC, airport;
通过这种方式,您可以轻松地为到达和离开返回其他列,并且如果您希望选择某些机场,可以使用基表上的索引
最近的相关答复:
作为机场出发,计数(*)作为计数
从逻辑上讲,在内部查询中添加“airport”别名可能最有意义。为了给出准确的期望结果,作为机场出发,计数(*)从逻辑上讲,在内部查询中添加“airport”别名可能最有意义。