В этом форуме обсуждаем общие вопросы и проблемы языка, решаем задачи на разных диалектах, делимся успехами и неудачами его применения.
Модератор: rozhnev
SQL*Plus
Сообщения: 352 Зарегистрирован: Ср апр 20, 2022 1:09 pm
Сообщение
SQL*Plus » Сб фев 15, 2025 7:32 pm
Unanonimized писал(а): ↑ Сб фев 15, 2025 1:13 pm
По ходу нет тут никого...
Ладно, балуемся дальше
Код: Выделить всё
with t as(
select id, a,b,c,d,e,f, (a+b+c+d+e+f)/6 row_avg from task_09)
, t2 as(
select id, col, val, case when row_avg < val then 1 end f3 from t
unpivot( val for col in (A,B,C,D,E,F)))
, t3 as (
select * from t2
model
dimension by (id, col, val)
measures(f3 f_interest)
rules ( f_interest[any,any,any] = case when 1 = f_interest[cv(),cv(),cv()]
and 1 = count(1)[cv(),any,cv()]
and 330 < count(1)[any,cv(),cv()]
then 1 end))
select count(count(f_interest)) from t3 group by id
having count(f_interest) = 1
"Моделька" отработала.
Результат правильный:
Код: Выделить всё
COUNT(COUNT(F_INTEREST))
------------------------
4175
Elapsed: 00:11:52.236
Время выполнения
11:52 . Впечатляет!
))
P.S. "Я могла бы найти ещё более запутанный способ, как это сделать", - сказала Белая Королева
(с) Алиса в Зазеркалье
Последний раз редактировалось
SQL*Plus Сб фев 15, 2025 7:37 pm, всего редактировалось 1 раз.
SQL*Plus
Сообщения: 352 Зарегистрирован: Ср апр 20, 2022 1:09 pm
Сообщение
SQL*Plus » Сб фев 15, 2025 7:36 pm
Предлагаю авторам решений давать этим решениям названия-псевдонимы.
Так нам будет проще на них указывать / к ним обращаться.
Например, "Решение с моделькой". "Нерешение с лишними вспомогательными таблицами", и т.п.
SQL*Plus
Сообщения: 352 Зарегистрирован: Ср апр 20, 2022 1:09 pm
Сообщение
SQL*Plus » Сб фев 15, 2025 7:44 pm
Unanonimized писал(а): ↑ Сб фев 15, 2025 1:13 pm
Код: Выделить всё
with t as(
select a a330,b b330,c c330,d d330,e e330,f f330
from task_09
group by grouping sets((a),(b),(c),(d),(e),(f))
having count(*) > 330
)
. . .
Назовем это "Решение с групингом"
Результат получился правильный.
Пока это самое короткое время расчета.
SQL*Plus
Сообщения: 352 Зарегистрирован: Ср апр 20, 2022 1:09 pm
Сообщение
SQL*Plus » Сб фев 15, 2025 7:47 pm
Frolwww писал(а): ↑ Сб фев 15, 2025 5:20 pm
Ладно вот вам 1 sql
Код: Выделить всё
SELECT COUNT(*)
FROM (
SELECT n.row_id
FROM normalized_table n
. . .
Не засчитано.
Постановка задачи не предполагает создание новых таблиц.