sql - SQL Group By 某行后进行计算

标签 sql group-by

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

<表类=“s-表”> <标题> GROUP_ID IX_IN_GROUP USER_ID 测量 <正文> 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)。然后我想找到组中的最后一个/最大测量值(无论 USER_ID 是什么)(称为 Y)。因此,我的预期输出是:

<表类=“s-表”> <标题> 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 然后连接 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

Demo here

关于sql - SQL Group By 某行后进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77621614/

相关文章:

mysql - 为什么 count(column_name) 会这样?

Mysql - 我有 3 个唯一的表,需要有关获取计数详细信息的提示

python - 通过 pandas 操作访问组中的特定组

Python - 根据在组中出现多次来定义变量

mysql - 将多列查询转换为行查询

sql - 以下更新命令中的语法错误

c# - 在 map 上显示圆圈会显示拉长的椭圆形

mysql - 如何在 Node.js 中一行执行多个 mysql 查询

sql - ORA-00937 : not a single-group group function in oracle

sql - 每组匹配行的比率