Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Внимание знатоки! сколько максимум может иметь ячеек одна таблица? (размер базы)

Если у меня интернет магазин, и в бд в каждом товаре 500 ячеек в базе данных большинство которых пустые это сильно нагружает сервер? и вообще сколько максимум может иметь ячеек одна таблица?
Ответ:
Сообщение от tarkasha
в бд в каждом товаре 500 ячеек в базе данных большинство которых пустые
Это говорит о некачественной структуре БД. Я бы сказала: Немасштабируемой.
Сообщение от tarkasha
это сильно нагружает сервер?
Это сильно нагружает хранилище. Самим алгоритмам обработки записей скорее всего будет без разницы сколько полей.
Сообщение от tarkasha
сколько максимум может иметь ячеек одна таблица?
А это нужно читать в спецификации СУБД.
Но из своего опыта я бы не рекомендовала использовать более 100 полей.
Вопрос: Найти максимум с count-ом

Подскажите пожалуйста как найти 5-ти периодичный максимум c count - ом попроще чем у меня (в select)

сейчас нахожу превышение 5-ти периодного максимума так как ниже-указано - хотелось бы проще и также все манипуляции только в select-e

T-SQL
1
2
3
4
5
6
7
8
select 
case when 
count(case when datepart(ww,дата)=10 then pppp else 0 end)>10 and
count(case when datepart(ww,дата)=11 then pppp else 0 end)>10 and
count(case when datepart(ww,дата)=12 then pppp else 0 end)>10 and
count(case when datepart(ww,дата)=13 then pppp else 0 end)>10 and
count(case when datepart(ww,дата)=14 then pppp else 0 end)>10 and
then максимум превышен else максимум не превышен end
Ответ:
Сообщение от АЛКС
надо оптимизировать запрос в select-e
во-первых, ты его даже целиком не привел, что тут "оптимизировать"?
Вопрос: Определение максимума среди значений типа х.х.х

Есть таблица, содержащая значения, например 3.2.14, 3.2.8, 3.2.1
Необходимо определить из всех максимум - по моей логике это 3.2.14, т.к. последнее число после точки - наибольшее. По мнению SQL максимум среди этих трёх - 3.2.8. Подскажите, как научить SQL определять максимум как мне нужно
Ответ:
T-SQL
1
2
3
4
5
declare @t table (s varchar(100));
 
insert into @t values ('3.2.14'), ('3.2.8'), ('3.2.1');
 
select top (1) * from @t order by cast('/' + s + '/' as hierarchyid) desc;
Вопрос: SSRS. Помогите найти максимум

Добрый день.

Понимаю, что вопрос простой, но голову сломал.

Есть таблица (приложение 1).

Мне нужно посчитать максимум уникальных id по каждому дню.

Я могу посчитать количество уникальных id по каждому времени, но это и ребенок сможет.
А вот по дню считать не хочет.

Делаю три группы. Считаю по времени уникальные по времени.

Пытаюсь посчитать максимум по уникальным по группе времени и получаю ошибку о недопустимости агрегатной функции.

Формула =Max(CountDistinct(Fields!id.Value)) дает общее количество уникальных за день.
Формула =Max(CountDistinct(Fields!id.Value), "Время") (где "Время" - это имя группы) дает ошибку по недопустимости параметра агрегатной функции

Подскажите пожалуйста, как решить проблему?

К сообщению приложен файл. Размер - 30Kb
Ответ:
Студент123.
Оно?


Именно, спасибо огромное!!!
Вопрос: SQL запрос Максимум за месяц

Есть таблица val c полями dt(datetime), idn(varchar) и val(float)
idn- сотрудник
dt- день продаж
val- кол-во продаж
Как создать запрос, что бы выдать максимальный день продаж каждого сотрудника за каждый месяц года.
типы результат
order by idn



dt idn val
21-02-2014 Соколов 55
11-03-2014 Соколов 58
01-04-2014 Соколов 25
29-05-2014 Соколов 35
22-02-2014 Иванов 58
14-03-2014 Иванов 78
18-04-2014 Иванов 65
21-05-2014 Иванов 35

Код SQL
1
2
3
4
5
6
SELECT     MONTH(dt) AS dt, MAX(val) AS MAX
FROM         A_temp
WHERE    idn='соколов' AND (dt > '2014-01-01') AND (dt < '2015-01-01') OR
idn='Иванов' AND (dt > '2014-01-01') AND (dt < '2015-01-01')
GROUP BY MONTH(dt)
ORDER BY dt
так выдает только номер месяца и максимум
Ответ: затратен не сам top, а сортировка к нему
Вопрос: количество открытых курсоров превысило допустимый максимум

Всем добрый день!

Помогите, пожалуйста, разобраться с ошибкой.

Собственно, код:

declare
v_code varchar2(30);
v_sql varchar2(1000);
v_sql1 varchar2(1000);
cursor v_cur is (select object_id from bs where rownum <= 50);
begin
v_sql1 := 'with .. (...) select code from bs join .... where object_id = ';
 for i in v_cur loop
  
    v_sql := v_sql1 || i.object_id;
    execute immediate v_sql
      into v_code;
    v_sql := '';   
  
    dbms_output.put_line(v_code );
  end loop;
end;


не стала расписывать весь код в v_sql1, большой запрос, не играющий особой роли в возникновении ошибки.

Ошибка возникает: ORA-01000: количество открытых курсоров превысило допустимый максимум.

Не совсем понимаю причин возникновений, так как, на мой взгляд, курсор открывается и закрывается неявно.

Спасибо!
Ответ: Вячеслав Любомудров,

Добрый день!
Столкнулись с проблемой ограничения кол-ва курсоров на сессию.
Откуда запускается пакет стоит параметр в 1500, на остальных схемах в которые стучимся по дблинк стоит параметр в 300.
Прокомментируйте пожалуйста: "С другой стороны, курсоры, открытые явно через dbms_sql или REF CURSOR нельзя закрывать даже при завершении PL/SQL блока. Поэтому именно они могут вызывать утечку курсоров и вызывать ORA-01000."
Как можно обнаружить утечку курсоров?(Единичный прогон проходит быстро, при массовом запуска все валится)
Понятно, что использование пакета dbms_sql упростит работу по сравнению с EXECUTE IMMEDIЕATE, что написанно у Фейерштейна, но решит ли?
Можно ли понимать какие курсоры не закрываются(если они сформированы динамически(тип - sys_refcursor), то какой элемент мы ему передали) и как?
Версии: Oracle 11gR2 и тоже такое творится на 12с.
Заранее спасибо.
Вопрос: Вывод уникальных значений с условием максимума по длине второго поля :(

Коллеги , прошу помочь - второй день ломаю голову ... (опыт есть но небольшой)

Есть простенькая таблица товаров ( Nr , Name ). Nr может повторятся. Name для одинаковых номеров может быть разной (и пустой).
Как вывести записи с уникальными значения Nr , но с максимальным по длине Name (Если записей с одинаковым максимум несколько можно брать любую)

MS SQL 2012
Ответ:
aleks2
Что за бред?
SELECT Nr, max(Name) as Name
  from
(
	SELECT 1 AS Nr, 'A' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AA' AS Name  UNION ALL 
	SELECT 1 AS Nr, 'AAA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'B' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BA' AS Name  UNION ALL 
	SELECT 2 AS Nr, 'BAA' AS Name  
) A
group by Nr



urfin2016
уникальными значения Nr , но с максимальным по длине Name
Вопрос: Размер строки превышает допустимый максимум в 8060 байт

Добрый день.

Динамически генерируется pivot запрос , в котором 151 столбец тип varchar(max), выдает ошибку ниже , Я понимаю это ограничение , если способы обойти его? Сам запрос изменить кардинально не могу , так как с pivot особо не разгонишься.

П.С. если уменьшить количество данных строке , то все работает.

часть запрос

select Convert(varchar(max),[FLD1],120) as FLD1, cast(sum(isnull(isnull([2014$2014-1$2014-01-01 00:00:001],0),0)) as varchar(max)) as [1] ,cas.......
FROM (SELECT FLD1,PRM1,PRM2,PRM3,convert(varchar(max),FLD2,120)+'$'+convert(varchar(max),FLD3,120)+'$'+convert(varchar(max),FLD4,120)+'1' as ResultCell1 FROM (SELECT FLD1,PRM1,PRM2,PRM3,convert(varchar(max),FLD2,120)+'$'+convert(varchar(max),FLD3,120)+'$'+convert(varchar(max),FLD4,120)+'1' as ResultCell1,convert(varchar(max),FLD2,120)+'$'+convert(varchar(max),FLD3,120)+'$'+convert(varchar(max),FLD4,120)+'2' as ResultCell2,convert(varchar(max),FLD2,120)+'$'+convert(varchar(max),FLD3,120)+'$'+convert(varchar(max),FLD4,120)+'3' as ResultCell3 FROM #temp ) AS QUERY PIVOT ( SUM(PRM1) FOR ResultCell1 IN ( .......


Ошибка

Сообщение 8618, уровень 16, состояние 2, строка 1
Обработчику запросов не удалось предоставить план запроса, так как для этого требуется рабочая таблица, а минимальный размер ее строки превышает допустимый максимум в 8060 байт. Типичная причина, по которой требуется рабочая таблица, - наличие в запросе предложений GROUP BY или ORDER BY. Если в запросе присутствует предложение GROUP BY или ORDER BY, рассмотрите возможность уменьшения количества или размера полей в этих предложениях. Рассмотрите возможность использования префикса (LEFT()) или хэширования (CHECKSUM()) полей для группирования или префикса для упорядочивания. Однако следует принять во внимание, что это приведет к изменению поведения запроса.
Ответ: PulsarOnyx,

Получилось по фиксит, просмотрев еще раз запрос, обнаружил, что при динамической генерации запроса, измерения такие как квартал и месяц просто умножались, из-за чего появлялось много лишних записей в запросе. Изменив генерацию отчета, уменьшился сам запрос. И вуаля , запрос работает, но понят, что ограничение в 1024 столбца в таблице мне не обойти , это разве, что как то быть запрос и вязать . Всем спасибо за помощь.
Вопрос: SSRS отразить максимальное значение доли

Подскажите пожалуйста, бьюсь над задачей уже больше неделю, надо отразить на диаграмме в подписи данных - максимальное значение за весь период - цветом

имеется поля: период, название продукта, кол-во всего продуктов на складе, кол-во проданных продуктов (отчет с выпадающим списком по периоду (неделя/месяц) и по названию продукта выпадающий список с выбором нескольких продуктов)

писал формулу как нижеуказанно (суммы нужны потому что в выползавшем списке с продуктами выбираю несколько продуктов, а максимум по нижеуказанной формуле ошибку выдает)

=iif(sum(Fields!KolProdano.Value)/sum(Fields!KolVsegoProduktov.Value)=max(sum(Fields!KolProdano.Value)/sum(Fields!KolVsegoProduktov.Value), "DataSet1"),"Red","#00ffffff")
Ответ: Klick,

в запросе не получается, отчет с выпадающим списком с выбором по названиям продуктов, можно прописать все комбинации по названию продуктов и рассчитать для каждой комбинации доли и затем без труда найти максимум без sum()/sum() чтоб Max() не ругался, но мне кажется это будет не адекват какой-то (столько возни ради нахождения максимума). Наверни-ка есть способ как распознать максимум в расчете - просто я его не знаю!
Вопрос: Подсчитать Max нескольких полей

Доброго времени суток форумчане.
В процессе проектирования базы данных по производству плановых ремонтов возникла необходимость вычислить максимум из дат нескольких полей т.е. вычислить последний.
в MS Exel это делается легко, а как это можно реализовать в Access? неужели потребуется писать длинный if на сравнение значений между собою больше/меньше как в примере?
Если существует др способ нельзя ли выложить какой либо пример.
Заранее спасибо.
Ответ:
Сообщение от glsn
вычислить максимум из дат нескольких полей
Если именно полей одной записи то как в примере. Но тогда Ваша база скорей всего не нормализована, обычно ищут максимум одного поля в нескольких записях.