it_mozhor
Member
Откуда:
Сообщений: 50
|
В задаче 28 учебной на СКЛ-ЕКС.РУ результат выдает не то!! Походу я что то не до понимаю в условии задачи, ну или в решении.
+ Сама задача | Краткая информация о базе данных "Окраска"
Схема базы данных состоит из трех отношений: utQ (Q_ID int, Q_NAME varchar(35)); utV (V_ID int, V_NAME varchar(35), V_COLOR char(1)); utB (B_Q_ID int, B_V_ID int, B_VOL tinyint, B_DATETIME datetime). Таблица utQ содержит идентификатор и название квадрата, цвет которого первоначально черный. Таблица utV содержит идентификатор, название и цвет баллончика с краской. Таблица utB содержит информацию об окраске квадрата баллончиком: идентификатор квадрата, идентификатор баллончика, количество краски и время окраски. При этом следует иметь в виду, что: - баллончики с краской могут быть трех цветов - красный V_COLOR='R', зеленый V_COLOR='G', голубой V_COLOR='B' (латинские буквы). - объем баллончика равен 255 и первоначально он полный; - цвет квадрата определяется по правилу RGB, т.е. R=0,G=0,B=0 - черный, R=255, G=255, B=255 - белый; - запись в таблице закрасок utB уменьшает количество краски в баллончике на величину B_VOL и соответственно увеличивает количество краски в квадрате на эту же величину; - значение 0 < B_VOL <= 255; - количество краски одного цвета в квадрате не превышает 255, а количество краски в баллончике не может быть меньше нуля; - время окраски B_DATETIME дано с точностью до секунды, т.е. не содержит миллисекунд.
Задание: 28 (Serge I: 2015-03-20)
C точностью до двух десятичных знаков определить среднее количество краски на квадрате. |
+ мое решение |
select convert(decimal(20,2),AVG(convert(float,SUM_VOL))) from
(
select Q_ID, SUM(B_VOL) SUM_VOL from
(
select
v.V_ID, b.B_DATETIME, q.Q_ID, v.V_COLOR,
b.B_VOL
from
(
select B_V_ID, B_VOL, B_Q_ID, B_DATETIME from
(
select *, sum(B_VOL) over (partition by B_V_ID order by B_DATETIME) ITOG
from utB
) t
where ITOG<=255
) b
join utQ q on q.Q_ID = b.B_Q_ID
join utV v on v.V_ID = b.B_V_ID
) t
group by Q_ID
) t
|
Даже вставил проверку что бы если идет закраска из баллончика пустого - не учитывать это. Один фиг не сходятся цифры.
|