Mysql 汇总一列中的所有值,尽管它们被另一列上的WHERE条件排除
Mysql 汇总一列中的所有值,尽管它们被另一列上的WHERE条件排除,mysql,sql,Mysql,Sql,CREATE TABLE sales ( id int auto_increment primary key, customerID VARCHAR(255), sales_volume INT, sales_count VARCHAR(255) ); INSERT INTO sales (customerID, sales_volume, sales_count ) VALUES ("Customer_01", "650&quo
CREATE TABLE sales (
id int auto_increment primary key,
customerID VARCHAR(255),
sales_volume INT,
sales_count VARCHAR(255)
);
INSERT INTO sales
(customerID, sales_volume, sales_count
)
VALUES
("Customer_01", "650", "1"),
("Customer_01", "718", "2"),
("Customer_01", "130", "3"),
("Customer_01", "455", "4"),
("Customer_01", "910", "5"),
("Customer_02", "705", "1"),
("Customer_03", "560", "1"),
("Customer_03", "938", "2"),
("Customer_03", "620", "3"),
("Customer_03", "182", "4"),
("Customer_04", "260", "1"),
("Customer_04", "390", "2");
预期结果:
customerID sum(sales_volume)
Customer_01 2863 (=650+718+130+455+910)
Customer_03 2300 (=560+938+620+182)
在上面的结果中,我想列出超过3次销售的所有客户,这是由列
sales\u count
定义的因此,我在查询中使用了条件
,其中sales\u count>=3
SELECT
customerID,
sum(sales_volume)
FROM sales
WHERE sales_count >= 3
GROUP BY 1;
根据该查询,仅列出正确的Customer\u 01
和Customer\u 03
但是,
sum(sales\u volume)
列中仅显示从第三次销售开始的sum
我需要在查询中对
Cusomter\u 01
和Customer\u 03
进行哪些更改,以汇总所有的销售额?您需要一个具有子句,而不是WHERE
:
SELECT
customerID,
sum(sales_volume)
FROM sales
GROUP BY 1
HAVING MAX(sales_count) >= 3;
WHERE
子句过滤聚合前的表,而HAVING
子句过滤聚合结果。
请参阅。
结果:
您需要一个HAVING
子句,而不是WHERE
:
SELECT
customerID,
sum(sales_volume)
FROM sales
GROUP BY 1
HAVING MAX(sales_count) >= 3;
WHERE
子句过滤聚合前的表,而HAVING
子句过滤聚合结果。
请参阅。
结果:
用于计算体积总和的内联视图方法:
SELECT
distinct a.customerID,
(select sum(sales_volume) from sales b where a.customerid = b.customerid group by b.customerid) sales_volume
FROM sales a
WHERE sales_count >= 3;
用于计算体积总和的内联视图方法:
SELECT
distinct a.customerID,
(select sum(sales_volume) from sales b where a.customerid = b.customerid group by b.customerid) sales_volume
FROM sales a
WHERE sales_count >= 3;
“由列sales\u count定义的超过3个销售。”-显然不是,您似乎想要任何销售大于等于3的客户“超过由列sales\u count定义的3个销售。”-显然不是,您似乎想要任何销售大于等于3的客户