首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于列的条件下的PostgreSQL计数

基于列的条件下的PostgreSQL计数
EN

Stack Overflow用户
提问于 2018-06-12 05:37:15
回答 2查看 26关注 0票数 1

我有一个名为admin_descriptions的表,它包含以下列:

description_idvalueadmin_idvalid_at

以及表admins,该表包含以下列:

state

我想要一个查询,它给我一个description_id,它给我的活跃管理员的计数,正在使用该描述。管理员的描述被认为是used,只要admin_descriptions表中有一行包含description_idNOT NULL value,并且valid_at比具有该description_idNULL value的任何其他条目都是最新的。

因此,示例数据:

Row 1:
description_id: 1
value: 'foo'
admin_id: 2
valid_at: '2010-01-10'

Row 2:
description_id: 1
value: NULL
admin_id: 2
valid_at: '2012-01-10'

Row 2:
description_id: 1
value: 'some value'
admin_id: 4
valid_at: '2014-01-10'

查询description_id = 1时的计数将为1。它将只考虑第3行。因为即使有第一行的值不为NULL,对于相同的admin_id,还有第2行的valid_at较新,并且其value为NULL。

我已经能够在不考虑valid_at的情况下通过以下方式获得计数:

SELECT COUNT(DISTINCT(ad.id)) AS COUNT
FROM admin_descriptions ad
JOIN admins ON admins.id = ad.admin_id
WHERE ad.description_id = 1
AND admins.state = 'active'

如何修改此查询以考虑每个admin_id/ valid_at _id组合的描述?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50806389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档