source

각 그룹의 합계를 총합으로 나누다

factcode 2022. 9. 4. 14:27
반응형

각 그룹의 합계를 총합으로 나누다

그룹 A와 그룹 B의 합계를 따로 구해서 각각 합계로 나누고 싶습니다.

이것을 사용하려고 했습니다.

select name, sum(qt)
from ntbl
group by name 
order_id 이름. qt
1 A 12
2 A 20
3 B 33
4 B 45

결과는 다음과 같습니다.

이름. qt dv
A 32 0.29
B 78 0.70

집계 기능과 창 기능을 함께 결합할 수 있습니다.

select name
     , sum(qt) as sum_qt
     , sum(qt) / sum(sum(qt)) over () * 100 as pct_qt
from t
group by name

모든 수량을 요약하는 다른 하위 쿼리를 교차 결합할 수 있습니다.

CREATE TABLE ntbl  (
  `order_id` INTEGER,
  `name` VARCHAR(1),
  `qt` INTEGER
);

INSERT INTO ntbl 
  (`order_id`, `name`, `qt`)
VALUES
  ('1', 'A', '12'),
  ('2', 'A', '20'),
  ('3', 'B', '33'),
  ('4', 'B', '45');
SELECT name, sum_name, ROUND(sum_name/sum_qt,2) as dv
FROM
(select name,SUM(qt) sum_name from ntbl group by name) q1 CROSS JOIN (SELECT SUM(`qt`) sum_qt FROM ntbl) q2
name | sum_name | dv:--- | -------: | ---:A | 32 | 0.29B | 78 | 0.71

db <>여기에 추가

언급URL : https://stackoverflow.com/questions/71488274/divide-the-sum-of-each-group-by-the-grand-total

반응형