Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подсчитать количество символов / 25 сообщений из 29, страница 1 из 2
16.05.2019, 11:46
    #39813947
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Добрый день. Нужна помощь с запросом.

Есть 2 таблицы - контракты(род) и тарифы(доч). У контрактов может быть несколько тарифов. Задача: подсчитать количество символов всех тарифов на контрактах и вывести максимальную длину.

Например:
У Контракта 3 тарифа: Связь, Интернет, Телевидение - количество символов 24.

Подскажите пожалуйста, как такое можно провернуть.
...
Рейтинг: 0 / 0
16.05.2019, 11:50
    #39813949
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuwees,

Код: plsql
1.
select contract, sum(lenght(tariff)) from table group by contract
...
Рейтинг: 0 / 0
16.05.2019, 12:03
    #39813956
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Dshedoo,

Спасибо большое! Только length по-другому пишется. Хорошего дня!
...
Рейтинг: 0 / 0
16.05.2019, 13:58
    #39814020
AserYZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Не хочу челленжить подход и зачем это Вам нужно - считать максимальную длину вместо подсчета количества сервисов, скорее всего Вам виднее, но что будет если будет 2 записи (гипотетически)

первая содержит 1 сервис "Проектирование инфраструктуры под ключ"
вторая 2 сервиса "Связь, Интернет"

Как сработает Ваша логика в этом случае и какую инфу она Вам даст?

К приведенному решению я бы добавил сортировку и выборку первой строки, если уж говорится о том, что нужно определить "и вывести максимальную длину".
...
Рейтинг: 0 / 0
16.05.2019, 14:21
    #39814047
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZ,

Мне надо в системе сэтить все тарифы в одно поле при определенном сценарии. надо узнать, какую длину поля делать.
...
Рейтинг: 0 / 0
16.05.2019, 14:22
    #39814050
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesкакую длину поля делать4000 byte
...
Рейтинг: 0 / 0
16.05.2019, 14:33
    #39814062
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
-2-,

ну судя по всему да...есть правда проблема - существуют контракты с кол-вом символов в десятки тысяч)
...
Рейтинг: 0 / 0
16.05.2019, 14:40
    #39814069
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZКак сработает Ваша логика в этом случае и какую инфу она Вам даст?


напр
оределить ширину поля (тарифы в одну строку)

Код: plsql
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.
34.
35.
36.
37.
38.
39.
40.
41.
SQL> with kontrakt as (
  2    select 1 id,'F-1212-a' n from dual union all
  3    select 2 id,'I-XDC3-b' n from dual
  4    )
  5  ,tarif as (
  6    select 1 id,1 kontrakt_ref,'Связь' k from dual union all
  7    select 2 id,1,'Интернет'             from dual union all
  8    select 3 id,1,'Телевидение'          from dual union all
  9    select 5 id,2,'Интернет'             from dual)
 10  select max(sum(length(k))) max_sum_length
 11   from kontrakt k,tarif t
 12   where t.kontrakt_ref=k.id
 13   group by k.id
 14  /

MAX_SUM_LENGTH
--------------
            24

SQL> col LIST_TARIF format a24


SQL> with kontrakt as (
  2    select 1 id,'F-1212-a' n from dual union all
  3    select 2 id,'I-XDC3-b' n from dual
  4    )
  5  ,tarif as (
  6    select 1 id,1 kontrakt_ref,'Связь' k from dual union all
  7    select 2 id,1,'Интернет'             from dual union all
  8    select 3 id,1,'Телевидение'          from dual union all
  9    select 5 id,2,'Интернет'             from dual)
 10  select k.id,max(k.n) n,listagg(t.k) within group(order by null) list_tarif
 11   from kontrakt k,tarif t
 12   where t.kontrakt_ref=k.id
 13   group by k.id
 14  /

        ID N        LIST_TARIF
---------- -------- ------------------------
         1 F-1212-a ИнтернетСвязьТелевидение
         2 I-XDC3-b Интернет



.....
stax
...
Рейтинг: 0 / 0
16.05.2019, 14:42
    #39814074
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuwees-2-,

ну судя по всему да...есть правда проблема - существуют контракты с кол-вом символов в десятки тысяч)

Тогда название тарифов вообще ни к чему.
Вряд ли какой-нибудь аналитик решит глазами пробежаться по строке в несколько десятков тысяч символов, чтобы прийти к чему-то.
Уже после 200 символов опытный аналитик придёт к итогу: "У этого контракта дофига тарифов".
...
Рейтинг: 0 / 0
16.05.2019, 14:43
    #39814075
AserYZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuwees,

CLOB, но опять же необходимость вытягивать все в строку спорна. Тут пахнет индийским дизайном или незнанием основ реляционных БД.
...
Рейтинг: 0 / 0
16.05.2019, 14:49
    #39814076
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZ,

CLOB нельзя в этой таблице использовать. большая нагрузка. буду искать другие решения)
...
Рейтинг: 0 / 0
16.05.2019, 14:49
    #39814077
AserYZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Staxнапр
оределить ширину поля (тарифы в одну строку)

.....
stax

Это понятно. Зачем это хранить и расчитывать ширину поля под это? Отчет? Что даст простыня текста если " существуют контракты с кол-вом символов в десятки тысяч ".
...
Рейтинг: 0 / 0
16.05.2019, 14:51
    #39814079
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZ,

Так это не мне решать. Это задача от бизнеса.
...
Рейтинг: 0 / 0
16.05.2019, 14:52
    #39814080
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZ,

и таких данных не много меньше процента. Основная масса до 400-500 символов.
...
Рейтинг: 0 / 0
16.05.2019, 14:58
    #39814085
AserYZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesAserYZ,

CLOB нельзя в этой таблице использовать. большая нагрузка. буду искать другие решения)

А Вы еще искать по этому полю собираетесь?
...
Рейтинг: 0 / 0
16.05.2019, 14:58
    #39814086
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZStaxнапр
оределить ширину поля (тарифы в одну строку)

.....
stax

Это понятно. Зачем это хранить и расчитывать ширину поля под это? Отчет? Что даст простыня текста если " существуют контракты с кол-вом символов в десятки тысяч ".
возьмет least(MAX_SUM_LENGTH, скоко_влазит)

ps
The maximum value of n is 2,000,000,000 bytes.

.....
stax
...
Рейтинг: 0 / 0
16.05.2019, 15:03
    #39814089
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
AserYZ,

Нет. Но слышал, что больше 1 CLOB на таблицу не стоит делать, а на часто используемую не желательно вообще. а это одна из основных таблиц.
...
Рейтинг: 0 / 0
16.05.2019, 15:13
    #39814104
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesНо слышал, чтона заборе написано слово "мир", да и то с тремя ошибками.
...
Рейтинг: 0 / 0
16.05.2019, 15:17
    #39814106
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Elic,

=)))) другими словами мне не дадут сделать CLOB)
...
Рейтинг: 0 / 0
16.05.2019, 15:33
    #39814124
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesAserYZ,
а это одна из основных таблиц.
очень странно что в "одной из основных" планируют/требуют хратить список контрактов

или ето такая хитрая денормализация?

варианты
1) переубедить что не надо сбивать все в кучу
2) переубедить что надо цлоб
3) хранить в обьектном типе
4) резать до 4000
5) несколько строк на конракт
....
999) еще то-то

.....
stax
...
Рейтинг: 0 / 0
16.05.2019, 16:09
    #39814147
AserYZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
StaxchuweesAserYZ,
а это одна из основных таблиц.
очень странно что в "одной из основных" планируют/требуют хратить список контрактов

или ето такая хитрая денормализация?

варианты
1) переубедить что не надо сбивать все в кучу
2) переубедить что надо цлоб
3) хранить в обьектном типе
4) резать до 4000
5) несколько строк на конракт
....
999) еще то-то

.....
stax

№5 прям реально уменьшит время, необходимое для базовых бизнес функций типа добавления и модификации.

Лучше несколько полей.

Да и кстати, вопрос к ТС - допустим Вы извратились и как-то уместить все в базу, как собираетесь доставать собранную конструкцию? через Varchar?
...
Рейтинг: 0 / 0
16.05.2019, 16:32
    #39814164
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesAserYZ,

CLOB нельзя в этой таблице использовать. большая нагрузка. буду искать другие решения)

поднимайтесь на 18 версию )
бешенной собаке 7 верст не крюк )))
...
Рейтинг: 0 / 0
16.05.2019, 17:12
    #39814190
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
Да и кстати, вопрос к ТС - допустим Вы извратились и как-то уместить все в базу, как собираетесь доставать собранную конструкцию? через Varchar?[/quot]


Это просто текстовое поле. Там через запятую будут перечислены все тарифы. Мне неинтересно, как они будут доставать) выделять мышкой и двигать))
...
Рейтинг: 0 / 0
16.05.2019, 17:13
    #39814191
chuwees
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
DВАchuweesAserYZ,

CLOB нельзя в этой таблице использовать. большая нагрузка. буду искать другие решения)

поднимайтесь на 18 версию )
бешенной собаке 7 верст не крюк )))

Так уже 18я))
...
Рейтинг: 0 / 0
16.05.2019, 17:22
    #39814196
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчитать количество символов
chuweesТак уже 18я))
мож хватит
Oracle VARCHAR2 max length. Since Oracle Database 12c, you can specify the maximum size of 32767 for the VARCHAR2 data type.

....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подсчитать количество символов / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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