powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подсчитать количество символов
29 сообщений из 29, показаны все 2 страниц
Подсчитать количество символов
    #39813947
chuwees
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Нужна помощь с запросом.

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

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

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

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

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

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

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

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

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

ну судя по всему да...есть правда проблема - существуют контракты с кол-вом символов в десятки тысяч)
...
Рейтинг: 0 / 0
Подсчитать количество символов
    #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
Подсчитать количество символов
    #39814074
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chuwees-2-,

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

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

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

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

.....
stax

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

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

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

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

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

.....
stax

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

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

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

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

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

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

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

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

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

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

.....
stax

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

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

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

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

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


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

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

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

Так уже 18я))
...
Рейтинг: 0 / 0
Подсчитать количество символов
    #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
Подсчитать количество символов
    #39814198
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chuweesDВАпропущено...


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

Так уже 18я))
что-то я погорячилась, с 12.1 работает
https://docs.oracle.com/database/121/REFRN/GUID-D424D23B-0933-425F-BC69-9C0E6724693C.htm#REFRN10321
...
Рейтинг: 0 / 0
Подсчитать количество символов
    #39814205
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВА что-то я погорячилась


поздно

21886492

у chuwees по Вашему совету перешли на 18-ю

....
stax
...
Рейтинг: 0 / 0
Подсчитать количество символов
    #39814209
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxDВА что-то я погорячилась


поздно

21886492

у chuwees по Вашему совету перешли на 18-ю

....
stax

чОрт...
...
Рейтинг: 0 / 0
Подсчитать количество символов
    #39814422
AserYZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chuweesДа и кстати, вопрос к ТС - допустим Вы извратились и как-то уместить все в базу, как собираетесь доставать собранную конструкцию? через Varchar?


Это просто текстовое поле. Там через запятую будут перечислены все тарифы. Мне неинтересно, как они будут доставать) выделять мышкой и двигать))[/quot]

Пока что это байтики в БД. Тля того, чтобы оно стало текстовым полем его до клиента донести нужно. Если Вы уместили как-то всю конструкцию, которая не влезает в varchar2 в базе, допустим ок. Но как вы её без CLOB в БД соберёте вместе и получите на клиенте, если целиком в тип VARCHAR2 она не помещается? Будете собирать на клиенте?
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подсчитать количество символов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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