sql 퍼센트 계산하기...
본문
select a.mb_name, b.mb_id, c.mb_id, count(*) as cnt, group_concat(DISTINCT b.wr_12 separator '||') wr_12b, group_concat(DISTINCT c.wr_12 separator '||') wr_12c, count(DISTINCT b.wr_31) as b_name, count(DISTINCT c.wr_31) as c_name , sum(DISTINCT b.wr_31) as totb, sum(DISTINCT c.wr_31) as totc from g5_member a inner join g5_write_csorder b on a.mb_id = b.mb_id inner join g5_write_cscenter c on b.mb_id = c.mb_id
위 소스에서 현재 출력된 값에서
<?php echo round (($row['totc'] / $row['totb'] * 100),1) ?> %
이렇게 퍼센트를 계산하고 있습니다.
ORDER BY에 퍼센트값을 사용하고 싶어서 그러는데... SQL 문에 어떻게 넣어야 할까요?
답변 2
마지막에 그대로 추가하면 됩니다.
select a.mb_name, b.mb_id, c.mb_id, count(*) as cnt,
group_concat(DISTINCT b.wr_12 separator '||') wr_12b,
group_concat(DISTINCT c.wr_12 separator '||') wr_12c,
count(DISTINCT b.wr_31) as b_name,
count(DISTINCT c.wr_31) as c_name ,
sum(DISTINCT b.wr_31) as totb,
sum(DISTINCT c.wr_31) as totc
from g5_member a
inner join g5_write_csorder b on a.mb_id = b.mb_id
inner join g5_write_cscenter c on b.mb_id = c.mb_id
ORDER BY c.wr_31/b.wr_31 [ASC | DESC]
-- 굳이 100을 곱해줄 필요까지는 없겠으나
-- PHP와 같은 값으로 한다면 ROUND(c.wr_31/b.wr_31*100, 1) [ASC | DESC]
-- 곱하기를 먼저 해주는 방법도 있어요. ROUND(c.wr_31*100/b.wr_31, 1) [ASC | DESC]
-- 다른 내용은 생략합니다.
sum(DISTINCT b.wr_31) as totb,
sum(DISTINCT c.wr_31) as totc
합계를 구할 때는 DISTINCT
를 빼야겠네요.
답변을 작성하시기 전에 로그인 해주세요.