选择所有子项只有一种状态的行

Posted

技术标签:

【中文标题】选择所有子项只有一种状态的行【英文标题】:Select rows with all childrens with only one status 【发布时间】:2021-12-28 14:35:56 【问题描述】:

我寻求有关创建 SQL 脚本的帮助。 我有这样的数据:

带有“plan_id”的表“计划” 表 'transactions' 和 'transaction_status'

计划和交易是一对多的,意味着计划可以有很多交易

我想读取所有 plan_id,但只有那些具有 100% SUCCESS 状态的那些

我的真实情况比这更复杂,但我现在有这样的问题要解决。

【问题讨论】:

minimal reproducible example 会让事情变得更清晰。 使用了什么 RDBMS?请设置相关标签 【参考方案1】:

下面我发布 PostgreSQL 的查询示例。你可以将它应用到你的版本中:

SELECT 
    plans.id, 
    COUNT(plan_id) all_transactions, 
    SUM(CASE WHEN success THEN 1 ELSE 0 END) success_transactions
FROM plans
JOIN transactions ON transactions.plan_id = plans.id
GROUP BY plans.id
HAVING COUNT(plan_id) = SUM(CASE WHEN success THEN 1 ELSE 0 END)
;

PostgreSQL fiddle

【讨论】:

以上是关于选择所有子项只有一种状态的行的主要内容,如果未能解决你的问题,请参考以下文章

从具有不同值的行中选择所有值

2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <

2023-01-12:一个n*n的二维数组中,只有0和1两种值, 当你决定在某个位置操作一次, 那么该位置的行和列整体都会变成1,不管之前是什么状态。 返回让所有值全变成1,最少的操作次数。 1 <

如何使用 JavaScript 或 Jquery 选择 GridView 中选定的行项的子项?

MySQL返回列包含任何但仅包含一组关键字的所有行

如何以干净的方式创建外键与 Room DB 相关的行和子项?