我有3张不同的表格,如下所示:

现实世界的场景有许多其他列,但这些列就足够了.

主要内容:

id total_task
1 1
2 2
3 3

主表上有一个外部键的任务:

t_id id
t1 1
t2 2
t3 2
t4 3
t5 3
t6 3

最后是一个错误表,它将记录上面的任务表中有一个外部键的所有失败任务.

e_id t_id error
e1 t1 error
e2 t2 new error
e3 t3 error
e4 t4 something

我需要查询的结果输出如下所示:

error main count error count
error 3 2
new error 2 1
something 3 1

基本上,我想对错误消息进行分组,计算错误消息的发生率,并且如果在多个主ID中出现相同的错误消息,则检索主表中的total_task的总和.

到目前为止,我无法检索总计数作为总和.我试过使用分区,多个CDE等,但我不确定如何将表链接在一起来实现这一点.虽然我知道我可以连接id、t_id和e_id的表,但我似乎找不到一种方法来得到和.

有没有办法以我想要的方式检索数据?

推荐答案

你可以把你的目标分成两部分:

  1. 获取每个错误的error_count
  2. 获取每个错误的Main_Count

第一个问题很简单:

select error, count(*) from Error group by error

对于第二个查询,您需要:

  1. 获取每个错误的主ID发生率
  2. 合计总任务
select error, sum(total_task) as main_count from (
  select distinct error, id from Error join Task using (t_id)
) as subquery
group by error

为了结束一个表,您可以连接两个查询using (error).

希望这能有所帮助!

Postgresql相关问答推荐

如何使用Docker安装PostgreSQL扩展

分区可以用于postgres中的同类查询吗?

Postgis超过2个表的查询在运行时爆炸

右连接 postgresql 出现语法错误

在连接字符串并将其附加到 PostgreSQL 中的 where 子句时出现语法错误.怎么修?

ST_Intersects 太慢

在 postgresql 数据库 timestampz 中保留用户偏移量

使用包含重复元素的数组 Select 重复值

PostgreSQL 中基于时间戳的移动平均线

postgresql 在查询中插入空值

从 Postgres 数据库中删除所有函数

从 PostgreSQL 中的字段中提取数字

没有查询要创建的in ... error

PostgreSQL 权限解释

在 Windows 10 中执行时,Docker 容器关闭并给出data directory has wrong ownership错误

设置 Phoenix 框架和 Ecto 以使用 UUID:如何插入生成的值?

在 postgresql 中获取上个月的数据

使用 SQLAlchemy 进行 PostgreSQL ILIKE 查询

使用 Postgresql 数据库(OSX Lion)创建 Rails 3.1 应用程序

与 iexact 一起使用时,Django get_or_create 无法设置字段