我有表“leads”,其中包含“lead_id”、“bearbeitungs_id_einkauf”、“ep”列
示例:
lead_id bearbeitungs_id_einkauf ep
1 12345 10
2 12345 20
3 77777 5
4 88888 8
我需要获取 'ONT' > 20 的所有记录。 ONT 是按 'bearbeitungs_id_einkauf' 分组的总和 'ep' :
'12345' = 30
'77777' = 5
'88888' = 8
因此,结果我只需要显示这些记录:
lead_id bearbeitungs_id_einkauf ep
1 12345 10
2 12345 20
我尝试过这个:
SELECT l.lead_id, l.bearbeitungs_id_einkauf, l.ep
FROM leads as l
WHERE (SELECT SUM(ep) as ONT FROM leads l2
WHERE l2.bearbeitungs_id_einkauf = l.bearbeitungs_id_einkauf) > 20;
但不明白这是正确的吗?我如何显示 ONT? 谢谢!
最佳答案
考虑以下因素:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,m VARCHAR(12) NOT NULL
,n INT NOT NULL
);
INSERT INTO my_table VALUES
(1,'12345',10),
(2,'12345',20),
(3,'77777',5),
(4,'88888',8);
SELECT * FROM my_table;
+----+-------+----+
| id | m | n |
+----+-------+----+
| 1 | 12345 | 10 |
| 2 | 12345 | 20 |
| 3 | 77777 | 5 |
| 4 | 88888 | 8 |
+----+-------+----+
SELECT x.*
FROM my_table x
JOIN
( SELECT m
, SUM(n) total
FROM my_table
GROUP
BY m
HAVING total > 20
) y
ON y.m = x.m;
+----+-------+----+
| id | m | n |
+----+-------+----+
| 1 | 12345 | 10 |
| 2 | 12345 | 20 |
+----+-------+----+
关于Mysql 查询在 WHERE 中使用 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59841397/