2013-08-21 5 views
0

내가 다음 표있어 :SQL에서 합계에 따라 항목을 선택하는 방법은 무엇입니까?

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 

이인가 가능한? 당신이 원한다면,

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

이 쿼리가 모두 SimonAnna를 반환합니다

답변

0

같은 일부 데이터베이스에서 작동, 나는이 곳 이름() 절보다 더 효과적 일 것 가입 생각합니다.

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 
2

당신은 쉽게 HAVING 절을 사용하여 0보다 큰 매출의 합과 사람들의 이름을 얻을 수 있습니다 당신이 최종 결과를 얻기 위해 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를 참조하십시오.

0

이 당신은 이런 식으로 그것을 만들 수 있습니다 오라클, MSSQL, DB2

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