0

週 7 日間の平均データ (価格) を長い間隔で取得するクエリがあります。月曜日、火曜日などの IE 平均価格。問題なく動作しますが、同じクエリで、このクエリが検出した平均を合計する方法がわかりません。Day1..Day5 の合計

現状では、このクエリはすべての価格の全体を合計します...IE膨大な数..平均からではありません。

何か案は?ところで、これはPostgresからのものです...ありがとう

SELECT rooms.name, rooms.id,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2009-12-13')) = 0 THEN (availables.price) ELSE 0 END) AS day1,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2009-12-13')) = 1 THEN (availables.price) ELSE 0 END) AS day2,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2009-12-13')) = 2 THEN (availables.price) ELSE 0 END) AS day3,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2009-12-13')) = 3 THEN (availables.price) ELSE 0 END) AS day4,
MAX(CASE WHEN (EXTRACT(DOW FROM availables.bookdate) - EXTRACT(DOW FROM DATE '2009-12-13')) = 4 THEN (availables.price) ELSE 0 END) AS day5,
(AVG(availables.price)) AS avg,
(SUM(availables.price)) AS sum, MAX((SIGN(spots)-1) + 1) AS beds
 FROM availables
 INNER JOIN rooms
 ON availables.room_id=rooms.id
 WHERE availables.room_id = '1780' AND availables.price > 0
 GROUP BY rooms.id, rooms.name
4

1 に答える 1

1

これはうまくいくはずです....

select avg(mon+tues+weds+thur+fri) as averageall,
       sum(mon+tues+weds+thur+fri) as sumall,
  avg(mon) as avgmon,
  avg(tues) as avgtues,
  avg(weds) as avgweds,
  avg(thurs) as avgthurs,
  agv(fri) as avgfri,
MAX((SIGN(spots)-1) + 1) AS beds
from
(
SELECT rooms.name, rooms.id,
CASE WHEN EXTRACT(DOW FROM availables.bookdate) = 1 THEN (availables.price) ELSE 0 END) AS mon,
CASE WHEN EXTRACT(DOW FROM availables.bookdate) = 2 THEN (availables.price) ELSE 0 END) AS tues,
CASE WHEN EXTRACT(DOW FROM availables.bookdate) = 3 THEN (availables.price) ELSE 0 END) AS weds,
CASE WHEN EXTRACT(DOW FROM availables.bookdate) = 4 THEN (availables.price) ELSE 0 END) AS thur,
CASE WHEN EXTRACT(DOW FROM availables.bookdate) = 5 THEN (availables.price) ELSE 0 END) AS fri,
spots, rooms.id, rooms.name
 FROM availables
 INNER JOIN rooms
 ON availables.room_id=rooms.id
 WHERE availables.room_id = '1780' AND availables.price > 0
) 
 GROUP BY rooms.id, rooms.name
)

私はテストしていないので、タイプミスがあるかもしれないことに注意してください。

于 2009-12-02T14:40:26.987 に答える