2013-05-01 2 views
1

테이블에있는 학생들의 평균 gpa 점수보다 낮은 경우 테이블에서 0.3 퍼센트 씩 학생들의 곡선을 커브로 만들려고합니다. 어떻게 그런 식으로 할 수 있을까? 보기는 평가 될 것이다. 난 열 이름과 GPA와 점수라는 테이블이 있습니다. 내가 아는 전부는 아마도 업데이트를 사용해야 할 것입니다. 나는열 평균을 기반으로 열 값 업데이트

+0

질문 샘플 데이터와 그것에 따라 원하는 출력 – peterm

답변

1
SELECT S.name, S.gpa, C.avgGPA AS AverageGPA, 
    CASE S.gpa < C.avgGPA 
     WHEN true THEN (S.gpa + 0.3) 
     ELSE S.gpa 
    END as CurvedGPA 
FROM StudentGrades AS S JOIN (
     SELECT avg(gpa) AS avgGPA 
     FROM StudentGrades 
    ) AS C 

가장 안쪽 쿼리는 테이블에 평균의 GPA를 발견 ... 질문의 유형뿐만 아니라 죄송 SQL에 새로운 오전. gpa의 데이터 유형을 10 진수로 가정합니다. 두 번째로 가장 안쪽에있는 쿼리는 모든 데이터를 선택하므로 결과를 비교하기 위해 모든 것을 비교하고 논리를 곡선으로 처리합니다. mySQL Workbench에서 테스트되었지만 구문은 Oracle에서 작동해야합니다.

UPDATE StudentGrades AS S JOIN (
    SELECT avg(gpa) AS avgGPA 
    FROM StudentGrades 
) AS C 
SET S.gpa = S.gpa + 0.3 
WHERE S.gpa < C.avgGPA 

: 위의 예는 (여러 번 실행 한 경우 안전하지) 안전하고 데이터를 수정하지 않습니다,하지만 당신은

질문에 대한 답변 ... 그래서 업데이트 요청 WHERE 절에 기본 키가 없다는 사실을 알리고 무시할 수 있습니다. 행운을 빈다! 이게 재미 있었어;)

+0

"누락 된 키워드 집합"오류가 발생했습니다 – user12074577

+0

그게 전부 오류라고 했나요? 제공된 두 번째 명령문에는 SET 키워드가 있습니다. –