내가 MySQL을 위해 당신이 첫 번째 쿼리에서 저장 결과 집합에 임시 테이블을 사용할 수
With grpTbl As
(
SELECT studentgroup.name As StudentGroupName,
SUM(CASE WHEN student.career = 'GRD' THEN 1 ELSE 0 END) AS 'TotalGraduate',
SUM(CASE WHEN student.career = 'UGRD' THEN 1 ELSE 0 END) AS 'TotalUnderGraduate'
FROM studentgroup
INNER JOIN memberof ON studentgroup.GID = memberof.GroupID
INNER JOIN student ON memberof.StudentID = student.SID
)
SELECT StudentGroupName
FROM grpTbl
WHERE TotalGraduate > TotalUnderGraduate
MySQL을 제외하고 SQL 서버, 포스트그레스 SQL과 같은 DBMS의 대부분을 지원하는 AS 절을 함께 사용했다 WHERE
절에서 UnderGraduate보다 더 많은 졸업생을 가진 GroupNames를 필터링하십시오. 이 방법은 다른 DBMS에서도 작동합니다. 임시 테이블을 만드는 구문이 다릅니다.
CREATE TEMPORARY TABLE grpTbl (
StudentGroupName varchar(255),
TotalGraduate INT,
TotalUnderGraduate INT
);
INSERT INTO grpTbl
SELECT studentgroup.name As StudentGroupName,
SUM(CASE WHEN student.career = 'GRD' THEN 1 ELSE 0 END) ,
SUM(CASE WHEN student.career = 'UGRD' THEN 1 ELSE 0 END)
FROM studentgroup
INNER JOIN memberof ON studentgroup.GID = memberof.GroupID
INNER JOIN student ON memberof.StudentID = student.SID
SELECT StudentGroupName
FROM grpTbl
WHERE TotalGraduate > TotalUnderGraduate
DROP TABLE grpTbl
끝내 불리는 것 ............. ...... –
잘 했어! 훌륭한 해결책 –