2017-12-20 16 views
0

며칠 동안이 SQL 질문에 어려움을 겪고 있습니다. 저는 SQL을 처음 접했습니다. 시간과 노력에 진심으로 감사드립니다.SQL에서 각 조건의 평균을 반환하는 방법

Q : 각 요일의 평균 도착 지연 시간을 반환합니다.

예상 결과 : flight_delays 및 weekdayName ipython 책 내 SQL 코드 :

+--------------+---------------+ 
| weekday_name | avg_delay | 
+--------------+---------------+ 
| Friday | 14.4520127056 | 
| Monday | 10.5375015249 | 
| Thursday | 8.47985564693 | 
| Wednesday | 8.4561902339 | 
| Saturday | 7.54455459234 | 
| Tuesday | 4.63152453983 | 
| Sunday | 4.21165978081 | 
+--------------+---------------+ 

은 이미 두 개의 테이블 준비를

SELECT distinct w.weekday_name, AVG(f.arr_delay) as average_delay 
FROM flight_delays as f, weekdayName as w 
WHERE f.day_of_week = w.dayofweek and w.dayofweek <= 7 
ORDER BY AVG(arr_delay) 

에만 반환

weekday_name average_delay 
Sunday   8.295147670495197 

따라서 7 일간의 결과는 모두 평균입니다. 하지만 매일 평균 결과를보고 싶습니다. 제 실수는 어디 있는지 설명해주십시오. 고마워.

+2

'distinct'를 제거하고'group by w.weekday_name'을 사용하십시오. –

+0

또한 WHERE 절에서 쉼표를 볼 때마다 잘못된 결과가 발생합니다. 적절한 JOIN을 사용하십시오. –

+0

많은 sooooo 감사합니다! –

답변

0

먼저 올바른 joingroup by 구문을 사용하는 방법을 익히십시오. 또한, 나는 and w.dayofweek <= 7이 필요하다고 생각하지 않습니다.

원하는대로 할 수 있습니까?

SELECT w.weekday_name, AVG(f.arr_delay) as average_delay 
FROM flight_delays f join 
    weekdayName w 
    on f.day_of_week = w.dayofweek 
GROUP BY w.weekday_name 
ORDER BY AVG(arr_delay) 
+0

고마워요. 이것이 내가 원하는거야. –

0

만들어진 일부 조정 : (여기 AVG)

SELECT w.weekday_name, AVG(f.arr_delay) as average_delay 
FROM flight_delays f INNER JOIN weekdayName w 
ON f.day_of_week = w.dayofweek 
GROUP BY w.weekday_name 
ORDER BY AVG(arr_delay); 

당신이 수행하는 경우 집계하여 SELECT에, 당신은 GROUP BY 비 집계 필드를 제공해야합니다.

+0

내 질문에 답해 주셔서 감사합니다. –

+0

당신의 상태에'w.dayofweek <= 7'을 원했는지 나는 확신하지 못했습니다. 그래서 나는 그것을 그대로 유지했습니다. 도움이되면 편집하고 제거했습니다. – Vashi