2017-10-22 1 views
0

이 작업을 수행하는 더 간단한 방법이 있어야하지만 SQL에서는 매우 새로운 기능입니다. 이 데이터는 대규모 설문 조사에서 얻었으며 이에 대한 도움이 필요합니다. 각 학급에서 평균 숙제 시간과 총 숙제 시간을 찾고 싶지만 모든 성적이 한 테이블에있는 형식으로 데이터가 구성됩니다. 그렇게 어렵지는 않지만, 알아 내지 못합니다. 감사!설문 조사에서이 SQL을 알아낼 수 없습니다.

SELECT 
    What_grade_are_you_in as Grade, 
    How_much_free_time_do_you_have_each_night as FreeTime, 
    AvgEnglish9HW, 
    AvgBible9HW, 
    AvgGov9HW, 
    AvgMath9HW, 
    AvgScience9HW, 
    AvgLang9HW, 
    AvgArt9HW, 

    AvgEnglish10HW, 
    AvgBible10HW, 
    AvgGov10HW, 
    AvgMath10HW, 
    AvgScience10HW, 
    AvgLang10HW, 
    AvgArt10HW, 

    AvgEnglish11HW, 
    AvgBible11HW, 
    AvgGov11HW, 
    AvgMath11HW, 
    AvgScience11HW, 
    AvgLang11HW, 
    AvgArt11HW, 

    AvgEnglish12HW, 
    AvgBible12HW, 
    AvgGov12HW, 
    AvgMath12HW, 
    AvgScience12HW, 
    AvgLang12HW, 
    AvgArt12HW, 

    SUM(AvgEnglish12HW, AvgBible12HW, AvgGov12HW, AvgMath12HW, AvgScience12HW, AvgLang12HW, AvgArt12HW) as TotalHW12, 
    SUM(AvgEnglish11HW,AvgBible11HW,AvgGov11HW,AvgMath11HW,AvgScience11HW,AvgLang11HW,AvgArt11HW) as TotalHW11, 
    SUM(AvgEnglish10HW,AvgBible10HW,AvgGov10HW,AvgMath10HW,AvgScience10HW,AvgLang10HW,AvgArt10HW) as TotalHW10, 
    SUM(AvgEnglish9HW,AvgBible9HW,AvgGov9HW,AvgMath9HW,AvgScience9HW,AvgLang9HW,AvgArt9HW) as TotalHW9 
FROM `omnihealth-1.HWLoad.HWLoad` ,(
SELECT 
AVG(On_average_how_much_homework_do_you_have_per_class_from_English) as AvgEnglish9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Bible) as AvgBible9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Gov) as AvgGov9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Math) as AvgMath9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Science) as AvgScience9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Foreign_Language) as AvgLang9HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Fine_Arts) as AvgArt9HW 
FROM `omnihealth-1.HWLoad.HWLoad` 
WHERE What_grade_are_you_in = 9 

SELECT 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_English) as AvgEnglish10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Bible) as AvgBible10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Gov) as AvgGov10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Math) as AvgMath10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Science) as AvgScience10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Foreign_Language) as AvgLang10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Fine_Arts) as AvgArt10HW 
FROM `omnihealth-1.HWLoad.HWLoad` 
WHERE What_grade_are_you_in = 10 

SELECT 
AVG(On_average_how_much_homework_do_you_have_per_class_from_English) as AvgEnglish11HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Bible) as AvgBible11HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Gov) as AvgGov11HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Math) as AvgMath10HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Science) as AvgScience11HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Foreign_Language) as AvgLang11HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Fine_Arts) as AvgArt11HW 
FROM `omnihealth-1.HWLoad.HWLoad` 
WHERE What_grade_are_you_in = 11 

SELECT 
AVG(On_average_how_much_homework_do_you_have_per_class_from_English) as AvgEnglish12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Bible) as AvgBible12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Gov) as AvgGov12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Math) as AvgMath12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Science) as AvgScience12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Foreign_Language) as AvgLang12HW, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Fine_Arts) as AvgArt12HW 
FROM `omnihealth-1.HWLoad.HWLoad` 
WHERE What_grade_are_you_in = 12 
) 

GROUP BY 
Grade 
ORDER BY 
TotalHW12,TotalHW11,TotalHW10,TotalHW9 DESC 

답변

1

참고 : 귀하의 출력 (귀하의 질문에 대한 예제의 외부 SELECT 문)은 전혀 이해가되지 않습니다! 한 쪽에서는 학년별로 그룹화되지만, 다른 쪽에서는 같은 줄에 모든 학년이 있습니다! 전혀 이해가 안돼! 출력 그것은 BigQuery에 표준 SQL

#standardSQL 
SELECT 
    Grade, 
    AvgEnglish, 
    AvgBible, 
    AvgGov, 
    AvgMath, 
    AvgScience, 
    AvgLang, 
    AvgArt, 
    AvgEnglish + AvgBible + AvgGov + AvgMath + AvgScience + AvgLang + AvgArt AS Total 
FROM (
    SELECT 
    What_grade_are_you_in AS Grade 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_English) AS AvgEnglish, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Bible) AS AvgBible, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Gov) AS AvgGov, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Math) AS AvgMath, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Science) AS AvgScience, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Foreign_Language) AS AvgLang, 
    AVG(On_average_how_much_homework_do_you_have_per_class_from_Fine_Arts) AS AvgArt 
    FROM `omnihealth-1.HWLoad.HWLoad` 
    WHERE What_grade_are_you_in IN (9, 10, 11, 12) 
    GROUP BY 1 
) 
ORDER BY Total DESC 
입니다

을 것으로 예상된다 무엇보다 그래서 내가 나서서 가정

관련 문제