sql - 将 Postgres 查询结果合并到一个表中

标签 sql postgresql

我有两个有效的 Postgres 查询。

SELECT date_trunc('hour', time) t, COUNT(*) AS "SC15" FROM logfile
      WHERE source = 'SC15' AND type = 'Sort'
      GROUP BY t ORDER BY t;

SELECT date_trunc('hour', time) t, COUNT(*) AS "SC71" FROM logfile
      WHERE source = 'SC71' AND type = 'Sort'
      GROUP BY t ORDER BY t;

如何让结果在单独的列中并排显示?按小时分组的 t(间隔)列、SC15 列和 SC17 列。我试过 UNION 和 INTERSECT。我想我需要做一个临时表?不确定如何。谢谢!

最佳答案

没有必要在两个查询中这样做

SELECT 
    date_trunc('hour', time) t,
    COUNT(*) FILTER (WHERE source = 'SC15') AS "SC15", 
    COUNT(*) FILTER (WHERE source = 'SC71') AS "SC71" 
FROM logfile
WHERE source IN ('SC15', 'SC71') AND type = 'Sort'
GROUP BY t
ORDER BY t

IN 运算符允许您过滤多个值。 FILTER 子句在计数之前过滤掉一些行。

关于sql - 将 Postgres 查询结果合并到一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631472/

相关文章:

mysql - 处理每个组的列中的值

mysql - 两个表之间的 SQL 约束

mysql - 我不能在sql delete中使用别名

java - 无法在 Postgres/JDBC 中跨层隔离事务

sql - 如何使用参数/变量并一起解释

sql - View 或临时表 - 在 MS SQL Server 中使用哪个?

java - 亚马逊 RDS : is there java API for PostgreSQL?

postgresql - 具有指定事务级别的 Postgres dblink 存储过程调用

postgresql - 如何在 PostgreSQL 中创建只读用户?

sql - 在aws athena中计算百分位数