从查询到子查询的组中未选择的值

Posted

技术标签:

【中文标题】从查询到子查询的组中未选择的值【英文标题】:Unselected value from a group by query to subquery 【发布时间】:2021-01-11 08:42:12 【问题描述】:

我必须通过查询向子查询提供一组未选择的值

喜欢

col_1 col_2 col_3
1 a 154
2 a 845
3 b 558
4 c 88

如果我这样做

SELECT col_2, COUNT(*) AS cnt FROM tb_1 GROUP BY col_2

我明白了:

col_2 cnt
a 2
b 1
c 1

在这里,第一行包含 2 个 col_3 值 [154, 845]。我想将这些值传递给选择部分的子查询并获得结果。喜欢:

SELECT col_2
     , (SELECT SUM(balance) FROM accounts WHERE id IN col_3) AS combined_balance 
  FROM tb_1

所以最终的输出看起来像

col_2 balance
a 150
b 200
c 180

如果帐户表看起来像

id balance
154 100
846 50
558 200
88 180

【问题讨论】:

请添加您想要的结果。 id 和 balance 是从哪里来的?? id 将是帐户表中的一列。 col_3 指的是该 ID (FK)。我真正想做的是,我想将非分组列的值(这意味着该列将在列中包含不同的值)传递给子查询。 欢迎来到 SO。 an unselected set of values 是什么?请看Why should I provide an MCRE for what seems to me to be a very simple SQL query 【参考方案1】:

您的方法是错误的,只需加入表格并汇总值

select col2,sum(balance) 
from tb_1
join accounts a on a.id = tb_1.col3
group by col2;

【讨论】:

以上是关于从查询到子查询的组中未选择的值的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 GraphQL 查询字段分组到子/嵌套查询组中?

SQL Server 查询需要从组中提取数据

如何在子查询中使用 select 中的值?

哪个 SQL 查询更快,为啥?

如何在 Oracle 的组中获得第三个 [重复]

ORACLE 子查询 嵌套查询 多值子查询