我要做的是获得高于平均时间,平均时间和低于平均时间的所有游乐设施的avg tip_portion。所以返回3行。当我运行它时,它说:
ERROR: missing FROM-clause entry for table "trip_data"
LINE 11: on trip_data.trip_id= trip_data.trip_id
我已将其更改为trip_data.trip_id= a.trip_id
它说:
ERROR: column a.trip_id does not exist.
我做错了什么。我能以更简单的方式做到这一点吗?
select
AVG(tip / total_fare) as tip_portion, trip_time
from
(
select
avg(trip_time),
case
when avg(trip_time) > 11.05 then 'Above Average'
when avg(trip_time) = 11.05 then 'Average'
when avg(trip_time) < 11.05 then 'Below Average'
end as trip_time_group
from
trip_data
) as a
join
trip_fare ON trip_fare.trip_id = trip_data.trip_id
where
pickup_date <> '2009-12-25'
group by trip_time;
答案 0 :(得分:0)
您没有在子查询中返回任何trip_data.trip_id= a.trip_id
列。另外,你应该把
trip_fare.trip_id= trip_data.trip_id
代替trip_data
,因为 -keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
在主查询中不存在。
答案 1 :(得分:0)
您需要将CASE
从子查询移动到主查询中。
SELECT AVG(tip/total_fare) AS tip_portion,
CASE WHEN trip_time > avg_trip_time THEN 'Above Average'
WHEN trip_time = avg_trip_time THEN 'Average'
ELSE 'Below Average'
END AS trip_time_group
FROM trip_fare
CROSS JOIN (SELECT AVG(trip_time) AS avg_trip_time
FROM trip_data) AS a
GROUP BY trip_time_group