powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить задачу по SQL
19 сообщений из 19, страница 1 из 1
Помогите решить задачу по SQL
    #39017402
alexander8zp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет! Помогите решить задачу, уже не первый час сижу, ничего не получается
Условие:
Краткая информация о базе данных "Окраска":

Схема базы данных состоит из трех отношений:
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 дано с точностью до секунды, т.е. не содержит миллисекунд.

Задача:
C точностью до двух десятичных знаков определить среднее количество краски на квадрате.
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39017510
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут не принято выкладывать решения заданий с sql-ex
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39017596
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, а что такое "среднее количество краски на квадрате" с физической точки зрения?
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39096168
Кitty_Loves
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня высветилась подсказка.


1) Учтите черные квадраты и вариант, когда окрасок нет вообще (т.е. все квадраты черные).

Только объясните, так надо, чтобы подсказка высвечивалась, после того, как ты сам до этого додумался и применил??

Но тем не менее задача у меня по прежнему не решена, валится на 3ей БД...
может кто нибудь просто еще подсказку дать??
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39096296
map7000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кitty_Loves,
Тоже эту задачу решал вчера. Нужна проверка на ноль. В подсказке же есть.
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39126352
Slavik-2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверка: если общая сумма краски из utB равна NULL, ее надо преобразовать в 0.
Среднее количество краски на квадрате - это сумма всей краски, на всех квадратах, деленная на количество квадратов.
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39126601
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirтут не принято выкладывать решения заданий с sql-ex

почему то я сразу так и подумал, что эта шизонутая задача именно оттуда...
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39127084
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slavik-2Среднее количество краски на квадрате - это сумма всей краски, на всех квадратах, деленная на количество квадратов.Спасибо, кэп. А теперь дочитай вопрос до конца.
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39186420
Nromik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно общeю площадь окраски поделить на количество квадратов из таблицы utQ
Код: sql
1.
2.
3.
4.
5.
SELECT CAST( 
             (SELECT Sum(B_VOL) FROM utB) * 1.0
              /
             (SELECT count(*) FROM utQ) 
            AS NUMERIC(6,2)) avg_paint
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39186449
Nromik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nromik,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT CAST( 
             1.0 * 
            CASE
                WHEN (SELECT Sum(B_VOL) FROM utB) IS NULL 
                THEN 0 
                ELSE (SELECT Sum(B_VOL) FROM utB) 
            END 
           /
             (SELECT count(*) FROM utQ) 
          AS NUMERIC(6,2)) avg_paint
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39293619
Evrotur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT CAST(COALESCE(A,0)*1.0/B*1.0 AS NUMERIC(6,2))
FROM
(SELECT SUM(B_VOL) A FROM utB) x,
(SELECT COUNT(*) B FROM utQ) y
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39295812
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про эту краску раза 4-е уже вопросы задавали ))
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39310848
anti92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь мне может объяснить почему запрос ниже не верный.
Минут 15 убил уже на эту задачу.


SELECT sum(aa.s)/count (aa.s) FROM
(SELECT distinct q.Q_NAME, SUM (cast(ISNULL(B_VOL,0) as FLOAT)) as s FROM utQ q
LEFT JOIN utB B on q.Q_ID=B.B_Q_ID
group by q.Q_NAME) aa
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39310867
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anti92,

наверное 2 раза FROM ??
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39310888
anti92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,

это же подзапрос. Можно хоть 100 раз from писать))))
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39310890
anti92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,

Сам запрос работает и возвращает правильный ответ, но "доп. проверка" ругается
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39310918
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anti92,

да, скобки мельком посчитал
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39344408
HappyinLife
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anti92Кто-нибудь мне может объяснить почему запрос ниже не верный.
Минут 15 убил уже на эту задачу.
Пытался решить аналогично вашему методу, но кто может объяснить, почему готовую сумму нужно еще раз чекать на NULL? Как в примере решения:
EvroturSELECT CAST(COALESCE(A,0)*1.0/B*1.0 AS NUMERIC(6,2))
FROM
(SELECT SUM(B_VOL) A FROM utB) x,
(SELECT COUNT(*) B FROM utQ) y

Я новичок, ткните носом, куда копать.
...
Рейтинг: 0 / 0
Помогите решить задачу по SQL
    #39363124
Сагит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anti92Кто-нибудь мне может объяснить почему запрос ниже не верный.
Минут 15 убил уже на эту задачу.


SELECT sum(aa.s)/count (aa.s) FROM
(SELECT distinct q.Q_NAME, SUM (cast(ISNULL(B_VOL,0) as FLOAT)) as s FROM utQ q
LEFT JOIN utB B on q.Q_ID=B.B_Q_ID
group by q.Q_NAME) aa


Все правильно сделано! Такие on-line тесты требуют соответсвие выходных данных - "с точностью до двух десятичных знаков" это вот так:

SELECT CAST(sum(aa.s)/count (aa.s) AS NUMERIC(12,2)) FROM
(SELECT distinct q.Q_NAME, SUM (cast(ISNULL(B_VOL,0) as FLOAT)) as s FROM utQ q
LEFT JOIN utB B on q.Q_ID=B.B_Q_ID
group by q.Q_NAME) aa
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите решить задачу по SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]