gpt4 book ai didi

sql - 按两行计数和聚合

转载 作者:行者123 更新时间:2023-11-29 12:28:55 25 4
gpt4 key购买 nike

假设我有如下表格:

id  | key           | user_id | value
---------------------------------------
8 | bp_diastolic | 1 | 93.0
7 | bp_systolic | 1 | 128.0
20 | bp_systolic | 2 | 108.0
21 | bp_diastolic | 2 | 76.0
35 | bp_diastolic | 3 | 113.0
34 | bp_systolic | 3 | 101.0
48 | bp_systolic | 4 | 115.0
49 | bp_diastolic | 4 | 77.0
62 | bp_systolic | 5 | 143.0
63 | bp_diastolic | 5 | 104.0
77 | bp_diastolic | 6 | 108.0
76 | bp_systolic | 6 | 144.0
90 | bp_systolic | 7 | 122.0
91 | bp_diastolic | 7 | 81.0
105 | bp_diastolic | 8 | 110.0
104 | bp_systolic | 8 | 146.0
118 | bp_systolic | 9 | 141.0
119 | bp_diastolic | 9 | 72.0
132 | bp_systolic | 10 | 120.0
133 | bp_diastolic | 10 | 107.0

我如何计算 bp_systolic 低于 120 且 bp_diastolic 低于 80 的所有 user_id

我不知道该怎么做,因为该条件适用于单个用户的两个不同行。事实上,我什至不知道如何为我想要的内容进行相关的网络搜索。

最佳答案

如果我们知道每个 (user_id, key) 最多有 一个 条目 - 这可以通过约束 UNIQUE (user_id, key ),这应该是最快的::

SELECT user_id
FROM tbl
WHERE key = 'bp_systolic' AND value < 120 OR
key = 'bp_diastolic' AND value < 80
GROUP BY 1
HAVING count(*) = 2;

HAVING 子句仅在可能存在缺少两个 key 之一的用户时才需要。

关于sql - 按两行计数和聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com