결과 그룹화 없이 SUM() 사용
저는 이미 (이 글을) 읽었지만, 그것을 제 특정 문제에 적용할 방법을 찾지 못했습니다.알고있어요SUM()
집합 함수인데 이렇게 사용하지 않는 것은 말이 안 되지만 이 특정한 경우에는SUM()
모든 행을 유지하면서 모든 결과를 확인할 수 있습니다.
여기 표가 있습니다.
--ID-- --amount--
1 23
2 11
3 8
4 7
해야합니다.SUM()
양, 그러나 모든 기록을 유지하므로 출력은 다음과 같습니다.
--ID-- --amount--
1 49
2 49
3 49
4 49
이 쿼리를 사용했지만 각 행만 합칠 뿐 모든 결과를 함께 집계하는 것은 아닙니다.
SELECT
a.id,
SUM(b.amount)
FROM table1 as a
JOIN table1 as b ON a.id = b.id
GROUP BY id
없는.SUM()
한 줄만 돌려주지만 신분증은 유지해야 합니다...
참고: 네, 이것은 꽤 기본적인 예이고 여기서 이것을 하기 위해 php를 사용할 수 있습니다. 하지만 분명히 테이블이 더 크고 행과 열이 더 많지만 중요한 것은 아닙니다.
SELECT a.id, b.amount
FROM table1 a
CROSS JOIN
(
SELECT SUM(amount) amount FROM table1
) b
표에 있는 모든 행의 합 값을 다음 행에 대한 데카르트 조인을 수행해야 합니다.id
. 하위 선택의 결과가 하나뿐이므로 (49
), 기본적으로 각각의 공간에 부착됩니다.id
.
와 함께MS SQL
사용가능OVER()
select id, SUM(amount) OVER()
from table1;
select id, SUM(amount) OVER()
from (
select 1 as id, 23 as amount
union all
select 2 as id, 11 as amount
union all
select 3 as id, 8 as amount
union all
select 4 as id, 7 as amount
) A
--- OVER PARTITION ID
PARTITION BY
당신이 하고 싶을 때 매우 유용한 것.SUM()
예를 들어 매월 또는 분기별 보고서 판매 또는 연간...(참고 사항distinct
모든 행에 대해 수행됩니다.)
select distinct id, SUM(amount) OVER(PARTITION BY id) as [SUM_forPARTITION]
from (
select 1 as id, 23 as amount
union all
select 1 as id, 23 as amount
union all
select 2 as id, 11 as amount
union all
select 2 as id, 11 as amount
union all
select 3 as id, 8 as amount
union all
select 4 as id, 7 as amount
) OverPARTITIONID
하위 쿼리를 사용하여 원래 테이블을 합에 연결합니다.
SELECT * FROM table1, (SELECT SUM(amount) FROM table1 AS amount) t
이거 하나면 돼요.sum()
쿼리를 수행하면 OK:
SELECT a.id, b.amount
FROM table1 a
cross join (SELECT SUM(amount) as amount FROM table1 AS amount) b
만약 다른 사람이 같은 문제를 가지고 있고 가입하지 않고 우리는 다음을 할 수 있습니다.
select *
,totcalaccepted=(select sum(s.acceptedamount) from cteresult s)
, totalpay=(select sum(s.payvalue) from cteresult s)
from cteresult t
end
전체 가입 사용 -
합계가 필요한 경우amount
현장에서tableB
모든 데이터를 저장할 수 있습니다.tableA
id match 대신에
SELECT a.amount, b.* FROM tableB b
full join (
select id ,SUM(amount) as amount FROM tableA
where id = '1' group by id
) a
on a.id = b.id where a.id ='1' or b.id = '1' limit 1;
언급URL : https://stackoverflow.com/questions/11357640/using-sum-without-grouping-the-results
'programing' 카테고리의 다른 글
Oracle 및 MS SQL Server 결합 SQL 문 (0) | 2023.10.05 |
---|---|
Angularjs는 지시문 내부의 양식 필드 유효성을 가져옵니다. (0) | 2023.10.05 |
Android 인터넷 연결 확인 (0) | 2023.09.25 |
여러 데이터베이스를 한 번에 조회 (0) | 2023.09.25 |
Pandas DataFrame 적용() 모든 코어 사용? (0) | 2023.09.25 |