powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
11 сообщений из 761, страница 31 из 31
Период между сообщениями больше года.
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #39015108
stim644
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xman123Люди ) Кто нить 68 сделал???

Задание: 68
Найти количество маршрутов, которые обслуживаются наибольшим числом рейсов.
Замечания.
1) A - B и B - A считать ОДНИМ И ТЕМ ЖЕ маршрутом.
2) Использовать только таблицу Trip


select count(*) as qty from (

select cnt_trips from (

Select (COALESCE(T1.cnt_trips,0)+COALESCE(T2.cnt_trips,0)) as cnt_trips from (
Select count(trip_no) as cnt_trips, town_from, town_to from Trip
where town_from IS NOT NULL OR town_to IS NOT NULL

GROUP BY
town_from, town_to
) as T1
LEFT JOIN
(
Select count(trip_no) as cnt_trips, town_from, town_to from Trip
where town_from IS NOT NULL OR town_to IS NOT NULL
GROUP BY
town_from, town_to
) as T2
ON T1.town_from=T2.town_to AND T1.town_to=T2.town_from
where T1.town_from>T2.town_from
)z


WHERE cnt_trips= (
select MAX(A.cnt_trips) as MAX_CNT from (

select cnt_trips from (

Select (COALESCE(T1.cnt_trips,0)+COALESCE(T2.cnt_trips,0)) as cnt_trips from (
Select count(trip_no) as cnt_trips, town_from, town_to from Trip
GROUP BY
town_from, town_to
) as T1
LEFT JOIN
(
Select count(trip_no) as cnt_trips, town_from, town_to from Trip
GROUP BY
town_from, town_to
) as T2
ON T1.town_from=T2.town_to AND T1.town_to=T2.town_from
where T1.town_from>T2.town_from
)z

)A
)
)B



Неверно.
Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.
* Несовпадение данных (1)

Результат выполнения Вашего запроса:
qty
2


А я вообще задание не понял. Какое то оно размытое, как мне кажется.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127196
Evil_gsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задание: 61 (Serge I: 2003-02-14)
Посчитать остаток денежных средств на всех пунктах приема для базы данных с отчетностью не чаще одного раза в день.

Не понято почему
SELECT (SELECT SUM(inc) FROM Income_o) - (SELECT SUM(out) FROM Outcome_o) as 'остаток'
"Ваш запрос не прошел проверку на третьей проверочной базе."

Проходит:

SELECT SUM(s) as 'остаток' FROM (
SELECT SUM(inc) s FROM Income_o
UNION
SELECT -SUM(out) s FROM Outcome_o
) this_t


в чем собственно может быть загвоздка, у кого-нибудь есть идеи?
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127200
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evil_gsm,

все идеи здесь лежат вокруг понимания правил работы арифметических операций в sql.
Когда результат select a+b drom dual отличается от результата результата select sum(a) From (select a from dual union select b from dual)?

Как только вы поймете это, вашему глазу станет совершенно понятно, в чем ошибка.
Просто так писать нельзя, необходимо внесение исправления в запрос, учитывающего способ работы арифметических операций в sql.
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127202
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evil_gsm,

SELECT SUM(...) по пустому набору вернет null
любые арифметические операции с null дадут null


Добавьте isnull к вашему первому варианту и получите верный ответ



Код: sql
1.
SELECT (SELECT ISNULL(SUM(inc), 0) FROM Income_o) - (SELECT ISNULL(SUM(out), 0) FROM Outcome_o) as 'остаток'



А вообще, вот так будет "покрасивей"

Код: sql
1.
2.
3.
4.
5.
6.
SELECT SUM(s) as 'остаток'
FROM (
SELECT s = inc FROM Income_o
UNION ALL
SELECT s = -out FROM Outcome_o
) this_t
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127204
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLex,

удивитесь вы или нет, но и ваш пример не пройдет "расширенную проверку".
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127211
Evil_gsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, запрос msLexSELECT (SELECT ISNULL(SUM(inc), 0) FROM Income_o) - (SELECT ISNULL(SUM(out), 0) FROM Outcome_o) as 'остаток'
Прошел проверку .

Спасибо вам всем за участие
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127213
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evil_gsm
booby, запрос msLexSELECT (SELECT ISNULL(SUM(inc), 0) FROM Income_o) - (SELECT ISNULL(SUM(out), 0) FROM Outcome_o) as 'остаток'

Прошел проверку .

Спасибо вам всем за участие
Это ужасно, что ошибочный запрос вселяет в вас радость.
На том сайте просто не умеют проверять sql.
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127217
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Evil_gsm
booby, запрос пропущено...

Прошел проверку .

Спасибо вам всем за участие

Это ужасно, что ошибочный запрос вселяет в вас радость.
На том сайте просто не умеют проверять sql.

Хотя, конкретно в данном случае это именно я ошибся.

Точно в такой записи запрос как раз правильный.
Но для общего случая, при наличии group by в ветках union,
такое преобразование union в прямое вычисление содержит ошибку
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127231
Evil_gsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, мне было непонятно чем один запрос отличается от другого, человек дал доходчивое объяснение и я его понял.
Вы конечно из лучших побуждений дали свои ответы, но если вы будете более развернуто объяснять ход своих мыслей, вас сможет понимать больше людей, а не только интерпретатор языка ) шутка.
... Такой запрос при наличии группировки проходит проверку
SELECT SUM(s) as 'остаток' FROM (
SELECT SUM(inc) s FROM Income_o GROUP BY point
UNION
SELECT -SUM(out) s FROM Outcome_o GROUP BY point
) this_t

Я так полагаю вы имели ввиду вариант SELECT (SELECT ISNULL(SUM(inc), 0) FROM Income_o GROUP BY point) - (SELECT ISNULL(SUM(out), 0) FROM Outcome_o GROUP BY point) as 'остаток'
так да запрос не отрабатывает совсем
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127254
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evil_gsm
booby, мне было непонятно чем один запрос отличается от другого, человек дал доходчивое объяснение и я его понял.
Вы конечно из лучших побуждений дали свои ответы, но если вы будете более развернуто объяснять ход своих мыслей, вас сможет понимать больше людей, а не только интерпретатор языка ) шутка.
... Такой запрос при наличии группировки проходит проверку
SELECT SUM(s) as 'остаток' FROM (
SELECT SUM(inc) s FROM Income_o GROUP BY point
UNION
SELECT -SUM(out) s FROM Outcome_o GROUP BY point
) this_t

Я так полагаю вы имели ввиду вариант SELECT (SELECT ISNULL(SUM(inc), 0) FROM Income_o GROUP BY point) - (SELECT ISNULL(SUM(out), 0) FROM Outcome_o GROUP BY point) as 'остаток'
так да запрос не отрабатывает совсем

Именно так.
А должен.
Это всего лишь значит, что в таком случае вы возвращаетесь в свою исходную позицию.
Про развернутось - еще ширшее уже некуда.
Вы правда не понимаете, что нужно поменять?
...
Рейтинг: 0 / 0
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
    #40127351
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby


Хотя, конкретно в данном случае это именно я ошибся.

Точно в такой записи запрос как раз правильный.
Но для общего случая, при наличии group by в ветках union,
такое преобразование union в прямое вычисление содержит ошибку


Вы совершенно правы, то что запрос прошёл проверку - это ошибка с точки зрения работы TSQL.

С точки зрения "логики задачи", те использования ISNULL() возвращает "правильный" результат, поскольку сумма не может быть NULL.
...
Рейтинг: 0 / 0
11 сообщений из 761, страница 31 из 31
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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