Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 汇总一列中的所有值,尽管它们被另一列上的WHERE条件排除_Mysql_Sql - Fatal编程技术网

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的客户