mysql选择其中一条有n项的记录

标签 mysql

如果其中 1 条记录包含 n,我将尝试获取所有记录,因此如果我有 3 条记录并且其中任何一条记录的 disposition_id = 1 并且它们的 time_spent 总和为 20 或更多并且属于同一个 patient_id

Table: Transactions
+----+------------+----------------+------------+------------+
| id | patient_id | disposition_id | time_spent | created_at |
+----+------------+----------------+------------+------------+
| 1  | 10         |             25 |         10 |      NOW() |
+----+------------+----------------+------------+------------+
| 2  | 10         |              1 |          2 |      NOW() |
+----+------------+----------------+------------+------------+
| 3  | 10         |             12 |          9 |      NOW() |
+----+------------+----------------+------------+------------+
| 4  | 12         |              1 |          8 |      NOW() |
+----+------------+----------------+------------+------------+

预期结果

Table: Transactions
+------------+------------+
| patient_id | time_spent |
+------------+------------+
| 10         |         21 |
+------------+------------+

即使 disposition_id 为 1,patient_id 为 12 也不会显示,它没有花费 20 或更多时间。但 patient_id 10 确实两者都有。

到目前为止我的查询是:

SELECT t.patient_id, t.disposition_id AS did, SUM(t.time_spent) AS sum_time
FROM transactions AS t
WHERE
    YEAR(t.created_at) = YEAR(CURDATE()) AND MONTH(t.created_at) = MONTH(CURDATE())
GROUP BY
    t.patient_id
HAVING sum_time >= 20

我尝试在 where 和 having 子句中使用 IN (1, t.disposition_id),但返回了 0 条记录。我觉得我很接近,但似乎无法将它们放在一起。

最佳答案

patient_id 聚合,然后断言您的两个要求:

SELECT
    t.patient_id,
    SUM(t.time_spent) AS sum_time
FROM transactions t
WHERE
    YEAR(t.created_at) = YEAR(CURDATE()) AND MONTH(t.created_at) = MONTH(CURDATE())
GROUP BY
    t.patient_id
HAVING
    COUNT(CASE WHEN t.disposition_id = 1 THEN 1 END) > 0 AND
    SUM(t.time_spent) > 20;

关于mysql选择其中一条有n项的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931520/

相关文章:

mysql - SQL INNER JOIN 性能

mysql - 插入 MySQL 触发器之前替换 new.id

php - 无法从 mySQL 存储过程返回结果

c# - 使用 C# 连接到 Mysql 数据库 - 需要一些数据集

mysql - 在 MySQL 中使用 REPLACE 实际上并不是替换行

mysql - 将动态列转置为行

mysql - 使用外键的数据库

MySQLTuner 1.5 最大可能内存使用冲突信息

php - 为什么MySQL中这条记录会重复?

javascript - 使用 javascript onchange 的下拉菜单不起作用