+-----------------+--------------+--------+--------+-----------+-----------+
| 고객아이디 | 고객이름 | 나이 | 등급 | 직업 | 적립금 |
+-----------------+--------------+--------+--------+-----------+-----------+
| apple | 정소화 | 20 | gold | 학생 | 1000 |
| banana | 김선우 | 25 | vip | 간호사 | 2500 |
| carrot | 고명석 | 28 | gold | 교사 | 4500 |
| melon | 성원용 | 35 | gold | 회사원 | 5000 |
| orange | 김용욱 | 22 | silver | 학생 | 0 |
| peach | 오형준 | NULL | silver | 의사 | 300 |
| pear | 채광주 | 31 | silver | 회사원 | 500 |
+-----------------+--------------+--------+--------+-----------+-----------+
gold’ 등급의 고객명과 적립금, 등급별 적립금 평균과의 차액 리스트를 적립금에 대해 내림차순으로
출력하려고 할때 등급별 적립금 평균과의 차액 리스트를 어떤식으로 작성해야 할까요..?
SELECT 고객이름,적립금
FROM 고객
WHERE 등급='gold'
oder by 적립금 desc;
답변 4개
테스트하기 좋은 샘플같아서
mysql로 간단히 구현해봤습니다.
원하시는 결과가 맞는지는 모르겟으나, 소숫점등은 알아서 변경하시면됩니다.
/*
gold’ 등급의 고객명과 적립금, 등급별 적립금 평균과의 차액 리스트를 적립금에 대해 내림차순으로
출력하려고 할때 등급별 적립금 평균과의 차액 리스트를 어떤식으로 작성해야 할까요..?
*/
CREATE TABLE `test1` (
`NO` INT(11) NOT NULL AUTO_INCREMENT,
`id` VARCHAR(20) NULL DEFAULT '' COLLATE 'utf8_general_ci',
`name` VARCHAR(30) NULL DEFAULT '' COLLATE 'utf8_general_ci',
`age` VARCHAR(30) NULL DEFAULT '' COLLATE 'utf8_general_ci',
`LEVEL` VARCHAR(30) NULL DEFAULT '' COLLATE 'utf8_general_ci',
`job` VARCHAR(30) NULL DEFAULT '' COLLATE 'utf8_general_ci',
`point` INT(11) NULL DEFAULT '0',
PRIMARY KEY (`NO`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (1, 'apple', '정소화', '20', 'gold', '학생', 1000);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (2, 'banana', '김선우', '25', 'vip', '간호사', 2500);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (3, 'carrot', '고명석', '28', 'gold', '교사', 4500);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (4, 'melon', '성원용', '35', 'gold', '회사원', 5000);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (5, 'orange', '김용욱', '22', 'silver', '학생', 0);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (6, 'peach', '오형준', 'NULL', 'silver', '의사', 300);
INSERT INTO `test1` (`NO`, `id`, `name`, `age`, `LEVEL`, `job`, `point`) VALUES (7, 'pear', '채광주', '31', 'silver', '회사원', 500);
SELECT
a.id,
a.name,
a.age,
a.job,
a.level,
a.point,
(
(
SELECT
SUM(POINT) sp
FROM test1 b
WHERE LEVEL = a.`LEVEL`
) /
(
SELECT
COUNT(LEVEL)
FROM test1 b
WHERE LEVEL = a.`LEVEL`
)
) AS AVG
,
a.point - (
(
SELECT
SUM(POINT) sp
FROM test1 b
WHERE LEVEL = a.`LEVEL`
) /
(
SELECT
COUNT(LEVEL)
FROM test1 b
WHERE LEVEL = a.`LEVEL`
)
) AS cha
FROM test1 a
ORDER BY cha;
답변을 작성하려면 로그인이 필요합니다.