如何根据SQL中的总和选择项目?

时间:2013-08-21 14:09:48

标签: sql sum

我有下表:

ID  Name    Sales
1   Kalle   1
2   Kalle   -1
3   Simon   10
4   Simon   20
5   Anna    11
6   Anna    0
7   Tina    0

我想编写一个只返回行的SQL查询 代表销售额>的销售人员; 0

ID  Name    Sales
3   Simon   10
4   Simon   20
5   Anna    11
6   Anna    0

这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以使用a HAVING子句轻松获取销售额大于0的人员姓名:

select name
from yourtable
group by name
having sum(sales) > 0;

此查询将同时返回SimonAnna,如果要返回每个名称的所有详细信息,可以在WHERE子句中使用上述内容来获取最终结果:

select id, name, sales
from yourtable
where name in (select name
                from yourtable
                group by name
                having sum(sales) > 0);

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

这适用于某些数据库,如oracle,mssql,db2

SELECT ID, Name, Sales
FROM
(
 SELECT ID, Name, Sales, sum(sales) over (partition by name) sum1
 FROM <table>
) a
WHERE sum1 > 0

答案 2 :(得分:0)

你可以这样做,我认为连接比()子句中的where name更有效。

SELECT Sales.name, Sales.sales 
FROM Sales 
JOIN (SELECT name FROM Sales GROUP BY Sales.name HAVING SUM(sales) > 0) AS Sales2 ON Sales2.name = Sales.name