我的 table 看起来像这样 (DB Fiddle)
对于每个组,我想首先找到与 USER_ID 101 的用户在该组中拥有的第一行相关的测量值(称为 X)。然后我想找到组中的最后一个/最大测量值(无论 USER_ID 是什么)(称为 Y)。因此,我的预期输出是:
获取 Y 值很简单
GROUP_ID,
MAX(measurement) as Y
FROM table1
GROUP BY GROUP_ID
ORDER BY GROUP_ID
但是,计算 X 然后连接 2 个查询目前我无法理解。
最佳答案
您可以使用聚合函数 MAX()
和 MIN()
结合 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
关于sql - SQL Group By 某行后进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77621614/