在SQL中,3个表连接在一起,后退了3个值:value
,time
,value_name
。值是我想要按天平均的值,time
是约10分钟的日期时间格式 - 这个我想要它每天转换,每天产生一行 - 我的value_name女巫是任何选定的值。
这是我的语法:
select time.entry_time, value_type.value_name,
avg(value.value) AVG_VALUE
FROM Value
inner join time on value.time_id = time.id
inner join value_type on value.type_id = value_type.id
WHERE value_type.value_name = 'CUSTOM'
GROUP BY DATEPART(DAY, time.entry_time)
我在这里收到错误:
列
time.entry_time
在选择列表中无效,因为它不包含在聚合函数或GROUP BY
子句中。
你能帮我解释一下这个语法吗?
答案 0 :(得分:3)
两个问题:
您选择time.entry_time
,但正在DATEPART(DAY, time.entry_time)
进行分组。你想要哪个入学时间?您的意思是选择DATEPART(DAY, time.entry_time)
吗?
您没有按value_type.value_name
分组。您需要将其添加到GROUP BY
子句中。 (是的,即使只有一个值'CUSTOM')。
尝试:
select DATEPART(DAY, time.entry_time), value_type.value_name,
avg(value.value) AVG_VALUE
FROM Value
inner join time on value.time_id = time.id
inner join value_type on value.type_id = value_type.id
WHERE value_type.value_name = 'CUSTOM'
GROUP BY DATEPART(DAY, time.entry_time), value_type.value_name