powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помощь в реализации WITH внутри другого WITH
3 сообщений из 3, страница 1 из 1
Помощь в реализации WITH внутри другого WITH
    #40077297
sysn1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решаю задачки из онлайн учебника (www.sql-ex.ru).
Нахожусь на 24 задание (https://www.sql-ex.ru/learn_exercises.php#answer_ref).
С помощью данного запроса я вывел все максимумы по каждому Типу техники (ноут, комп, принтер):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
WITH pk (model, price) as (
SELECT model, price
FROM PC
WHERE price = (SELECT MAX(price)
FROM pc)
),
l (model, price) as (
SELECT model, price
FROM laptop
WHERE price = (SELECT MAX(price)
FROM laptop)
),
pr (model, price) as (
SELECT model, price
FROM printer
WHERE price = (SELECT MAX(price)
FROM printer)
)
SELECT *
FROM pk
UNION ALL
SELECT *
FROM l
UNION ALL
SELECT *
FROM pr
---



Остается логичным, что из этого общака можно вытянуть максимум таким запросом:
Код: sql
1.
2.
3.
4.
5.
SELECT price, model
FROM *сделанный WITH*
WHERE price = (MAX(price)
FROM *сделанный WITH*
)



Проблема заключается в том, что я не могу понять как засунуть *сделанный WITH* в новый WITH?

Проблема решается INSERT-ом нынешних данных в новую таблицу (можно в временную) и уже там вставлять последний скрипт на максимум. Но есть ли решение в один скрипт?

PS. Возможно задача решается в меньшее количество строк, но приятнее когда сам решил (если даже систему загрузил на максимум)
...
Рейтинг: 0 / 0
Помощь в реализации WITH внутри другого WITH
    #40077299
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysn1k,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
WITH pk (model, price) as (
SELECT model, price
FROM PC
WHERE price = (SELECT MAX(price)
FROM pc)
),
l (model, price) as (
SELECT model, price
FROM laptop
WHERE price = (SELECT MAX(price)
FROM laptop)
),
pr (model, price) as (
SELECT model, price
FROM printer
WHERE price = (SELECT MAX(price)
FROM printer)
),
result as
(
SELECT *
FROM pk
UNION ALL
SELECT *
FROM l
UNION ALL
SELECT *
FROM pr
)
SELECT price, model
FROM result  --*сделанный WITH*
WHERE price = (MAX(price)
FROM result --*сделанный WITH*
...
Рейтинг: 0 / 0
Помощь в реализации WITH внутри другого WITH
    #40077356
sysn1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

Спасибо большое. Не знаю почему SELECT с UNION мозг не давал поместить в CTE. Казалось, что так не сработает.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помощь в реализации WITH внутри другого WITH
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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