2

SQL では、3 つのテーブルが結合され、3 つの値が取得されます: value、、。値は、1 日ごとに平均したいもので、約 10 分の日時形式です。これは、毎日変換して、毎日 1 行になるようにしたいものです。timevalue_nametime

これが私の構文です:

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句のいずれにも含まれていないため、選択リストでは無効です。

この構文について教えてください。

4

1 に答える 1

3

2 つの問題:

  1. を選択time.entry_timeしましたが、グループ化していDATEPART(DAY, time.entry_time)ます。ご希望の入場時間は?DATEPART(DAY, time.entry_time)代わりに選ぶつもりだったの?

  2. でグループ化していませんvalue_type.value_nameGROUP BYこれを句に追加する必要があります。(はい、「CUSTOM」という値は 1 つしかありませんが)。

試す:

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
于 2012-09-24T08:02:06.273 に答える