我的桌子看起来像这样(DB Fiddle)

GROUP_ID IX_IN_GROUP USER_ID MEASUREMENT
1 1 100 7
1 2 101 80
1 3 100 106
1 4 101 140
1 5 100 182
1 6 101 207
2 1 100 3
2 2 101 6
2 3 100 37
2 4 101 59
2 5 100 63

对于每个组,我希望首先找到与USER_ID为101的用户在该组中的第一行相关联的度量值(称为X).然后,我希望找到组(称为Y)中的最后一个/最大测量值(与USER_ID无关).因此,我的预期输出是:

GROUP_ID X Y
1 80 207
2 6 63

获取Y值很简单

GROUP_ID,
MAX(measurement) as Y
FROM table1
GROUP BY GROUP_ID
ORDER BY GROUP_ID

但是,计算X,然后连接这两个查询,我现在想不起来了.

推荐答案

您可以使用聚合函数MAX()MIN() COMERED WITH CASE子句来实现:

SELECT 
GROUP_ID,
MIN(CASE WHEN USER_ID = 101 THEN measurement END ) AS X,
MAX(measurement) as Y
FROM table1
GROUP BY GROUP_ID;

结果:

GROUP_ID    X   Y
1           80  207
2           6   63

Demo here

Sql相关问答推荐

SQL:创建查询以添加减少的总数

如何在一个范围内进行分组.""范围值在范围表中定义

无效和不匹配的计数

我如何计算字母a出现的字符串的次数?

为什么在这种情况下我不能使用LAG函数?

如何优化我的功能以减少花费的时间?

如何根据计数和分组获取订单总数

SQL:计算与另一列中给定值互斥的匹配项

我怎样才能得到列值对应的最大值在另一个?

对多个条件的SQL进行排名

如何找到一个组合的两个列,这是不是在其他表在ORACLE SQL?

在SQL中,筛选其他列中只有一个值的ID

改进的SQL子字符串提取

如何在T-SQL中编写row_number的WHERE子句?

匹配 H[0-9][0-9] 但不匹配除字母 H 之外的任何字母

SQL Server - 复杂场景 - 比较状态并填充值到后续行

标量子查询中的窗口函数不起作用

如何根据 Amazon Athena 中的多个列值删除重复行?

如何刷新在视图之上创建的表

Amazon Redshift - 子计划的哈希表不存在