2017-10-22 22 views
0

これを行う簡単な方法が必要ですが、私はSQLで非常に新しいです。私は大規模な調査からこのデータを得ました。私はこれに助けが必要です。私は宿題の平均時間と合計時間を各クラスから求めたいが、データはすべての等級が1つのテーブルにあるようにフォーマットされている。それは難しいことではありませんが、私はそれを理解することはできません。ありがとう!調査からこの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 
で先に行って、出力を下回ると想定しました
関連する問題