0 / 0 / 1
Регистрация: 21.01.2021
Сообщений: 224

Sql + математика

01.04.2025, 12:13. Показов 2324. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!
Подскажите, есть таблица, в ней поле "voltage" (заполнено) и "voltageRabochee" (пустое).
В поле "voltageRabochee" нужно вставить "среднее значение - voltage". Делаю так:
Delphi
1
2
3
4
5
sql.Text := 'UPDATE SKZ_Oscillogramm ' +
  'SET voltageRabochee = AVG(voltage) - voltage ' +
  'WHERE ukzNumber = :ukzN';
  Parameters.ParamByName('ukzN').Value := ukzNumber.Text;
  ExecSQL;
пишет "попытка выполнить запрос, который не включает указанное выражение 'AVG(voltage)/AVG(voltage)-Voltage' как часть статистической функции или группы.
Подскажите, в чем ошибка?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2025, 12:13
Ответы с готовыми решениями:

Математика в Delphi
Здравствуйте ! есть такая проблема: нужно создать программу которая решала бы уравнение на языке дэлфи. часть программы я написал, и...

Дискретная математика на Delphi
Уважаемые форумчане! Задали в институте написать программу, вот тема - "Программа создания правильных аргументов по заданному...

вычислительная математика EXCEL
здравствуйте))есть таблица Excel, теперь нужно записать решение в делфи, как это сделать, подскажите пжл...пример такой: интеграл от 2 до 1...

12
 Аватар для Beltar
831 / 445 / 39
Регистрация: 05.05.2022
Сообщений: 3,102
01.04.2025, 12:24
В том, что не ознакомился с правилами применения агрегатных функций.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
01.04.2025, 12:26
Цитата Сообщение от 301sem Посмотреть сообщение
в чем ошибка?
В использовании агрегатной функции внутри конструкции UPDATE .. SET. Это, если мне мой склероз не изменяет, только подзапросом делается. Хотя... Какая СУБД у Вас?
0
0 / 0 / 1
Регистрация: 21.01.2021
Сообщений: 224
01.04.2025, 12:32  [ТС]
Access
Delphi
1
2
3
sql.Text := 'UPDATE SKZ_Oscillogramm ' +
  'SET voltageRabochee = (SELECT AVG(voltage) FROM SKZ_Oscillogramm WHERE ukzNumber = :ukzN) - voltage ' +
  'WHERE ukzNumber = :ukzN';
Вот так еще пробовал, может извращение конечно. Пишет "В операции должен использоваться обновляемый запрос"
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
01.04.2025, 12:47
2 параметра с одним именем? Это у людей могут встречаться полные тёзки, программа такой неоднозначности не потерпит.
Вы выполняли этот запрос в самой СУБД? Он отработал или такую же ошибку показал?

Добавлено через 2 минуты
Хотя зачем в таблице БД поле, которое вычисляется? Зачем его заполнять, обновлять, если его значение всегда можно получить при выборке?

Добавлено через 3 минуты
А вообще обсуждать SQL-запрос, не имея ни малейшего представления о структуре таблиц и не представляя конечного результата - то еще удовольствие.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
01.04.2025, 13:31
Цитата Сообщение от 301sem Посмотреть сообщение
Вот так еще пробовал
это похоже на правду, только вопрос
а если вы добавите еще одну строку в эту таблицу с таким же ukzNumber
то рассчитанное значение во всех остальных испортится

именно поэтому как правильно написали выше, такие значения рассчитываются при запросе данных, а не хранятся
1
0 / 0 / 1
Регистрация: 21.01.2021
Сообщений: 224
01.04.2025, 13:53  [ТС]
вычисляю поле voltageRabochee чтобы потом в frxreport засунуть это поле

Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
Вы выполняли этот запрос в самой СУБД? Он отработал или такую же ошибку показал?
просто вывел пустое поле voltageRabochee, даже просто запрос
SQL
1
UPDATE SKZ_Oscillogramm SET voltageRabochee = 1
Добавлено через 1 минуту
Цитата Сообщение от D1973 Посмотреть сообщение
А вообще обсуждать SQL-запрос, не имея ни малейшего представления о структуре таблиц и не представляя конечного результата - то еще удовольствие.
id счетчик
ukzNumber Короткий текст
voltage и voltageRabochee Числовой
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
01.04.2025, 16:44
Лучший ответ Сообщение было отмечено 301sem как решение

Решение

Цитата Сообщение от 301sem Посмотреть сообщение
вычисляю поле voltageRabochee чтобы потом в frxreport засунуть это поле
SQL
1
SELECT Fld_1, Fld_2, AVG(Fld_3) AS QQQ FROM Your_Table
И вот теперь стройте свой отчет в frxreport на основании набора данных, полученных этим запросом.
Цитата Сообщение от 301sem Посмотреть сообщение
просто вывел пустое поле
то есть не отработал, получается... Ну так надо в самом Акцессе разбираться, что ему не нравится... У меня такой запрос прекрасно отработал обновив все записи в таблице.
1
0 / 0 / 1
Регистрация: 21.01.2021
Сообщений: 224
01.04.2025, 17:09  [ТС]
Обязательно попробую!
А здесь вот что не так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sql.Text := 'INSERT INTO UKZinfo (ukzNumber, VoltageAvg, VoltageMax, VoltageMin, CurrentAvg, ' +
      'CurrentMax, CurrentMin, PotentialAvg, PotentialMax, PotentialMin) ' +
      'SELECT ukzNumber, ' +
      'AVG(sutVoltage) AS VoltageAvg, ' +
      'MAX(sutVoltage) AS VoltageMax, ' +
      'MIN(sutVoltage) AS VoltageMin, ' +
      'AVG(sutCurrent) AS CurrentAvg, ' +
      'MAX(sutCurrent) AS CurrentMax, ' +
      'MIN(sutCurrent) AS CurrentMin, ' +
      'AVG(sutPotential) AS PotentialAvg, ' +
      'MAX(sutPotential) AS PotentialMax, ' +
      'MIN(sutPotential) AS PotentialMin ' +
      'FROM SKZ_sutochnye ' +
      'WHERE ukzNumber = :ukzN';
      Parameters.ParamByName('ukzN').Value := ukzNumber.Text;
    ExecSQL;
ругается именно если я в этот запрос добавляю ukzNumber в Insert into и в select. Без этого работает
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,425
Записей в блоге: 3
01.04.2025, 18:21
Цитата Сообщение от 301sem Посмотреть сообщение
ругается именно если я в этот запрос добавляю ukzNumber в Insert into и в select.
Что говорит-то? На первый взгляд ничего криминального в запросе нет, если акцессовский диалект SQL-я понимает конструкцию INSERT INTO ... SELECT ...
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
02.04.2025, 11:54
Цитата Сообщение от 301sem Посмотреть сообщение
ругается
децкий сат

оно не ругается, а показывает ошибочку, и текстик этой ошибочки обычно помогает решить проблемочку

поэтому взрослые дяди и тёти прикладывают текст ошибки и дают как можно больше контекста, чтобы другие могли разобраться
0
Эксперт Pascal/Delphi
 Аватар для droider
4889 / 2823 / 865
Регистрация: 04.10.2012
Сообщений: 10,268
29.07.2025, 12:59
Цитата Сообщение от 301sem Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
sql.Text := 'INSERT INTO UKZinfo (ukzNumber, VoltageAvg, VoltageMax, VoltageMin, CurrentAvg, ' +
 'CurrentMax, CurrentMin, PotentialAvg, PotentialMax, PotentialMin) ' +
 'SELECT ukzNumber, ' +
 'AVG(sutVoltage) AS VoltageAvg, ' +
 'MAX(sutVoltage) AS VoltageMax, ' +
 'MIN(sutVoltage) AS VoltageMin, ' +
 'AVG(sutCurrent) AS CurrentAvg, ' +
 'MAX(sutCurrent) AS CurrentMax, ' +
 'MIN(sutCurrent) AS CurrentMin, ' +
 'AVG(sutPotential) AS PotentialAvg, ' +
 'MAX(sutPotential) AS PotentialMax, ' +
 'MIN(sutPotential) AS PotentialMin ' +
 'FROM SKZ_sutochnye ' +...
301sem, заметка на будущее: многострочные запросы лучше записывать через sql.Add(). Не нужно их пихать в sql.Text.
0
 Аватар для Beltar
831 / 445 / 39
Регистрация: 05.05.2022
Сообщений: 3,102
29.07.2025, 15:00
На будущее я делаю вот так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function OpenFDQuery(Q:TFDQuery; const SQL:String; Silent:Boolean=False):Boolean;
begin
try
Q.Close;
Q.SQL.Clear;
Q.SQL.Add(SQL);
Q.Open;
Result:=True;
except
Result:=False;
if not Silent then raise;
end;
 
end;
Просто кидаю собранную строку, одной командой и имею возможность как-то реагировать на ошибки, например, поставить Silent=True и вызывать в цикле, не боясь, что у меня начнут вылезать окна эксепшенов.

А в Delphi 12 появились многострочные строковые литералы. Это удобно:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TDM.OpenMachineParams(Filter: Integer);
var S:String;
begin
QMachineParams.Close;
S:='''
  Select MachineParameter.stdNr, MachineParameter.nameID, MachineParameter.descriptionID,
  T.text as Name, MachineParameter.refValue, MachineParameter.Min, MachineParameter.Max,
 T2.Text as MeasUnit, MachineParameter.tagID, Tag.TagName, T1.text as Description
From MachineParameter
Left Join Translation T on MachineParameter.nameID=T.textID
Left Join Translation T1 on MachineParameter.descriptionID=T1.textID
Left Join Translation T2 on MachineParameter.engUnitID=T2.textID
Left Join Tag on MachineParameter.tagID=Tag.tagID
Where (T.languageID=5) and (T1.languageID=5) and
  (T2.languageID=5) and (MachineParameter.hide=0)
''';
//Фильтр сюда
if Filter<>0 then
  S:=S+' and MachineParameter.mpID in '+
  '(Select mpID from MachineParameterClassMember Where parameterClassID='+
  Filter.ToString+') ';
S:=S+' Order BY MachineParameter.stdNr';
OpenFDQuery(QMachineParams,S);
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2025, 15:00
Помогаю со студенческими работами здесь

Вычислительная математика
Помогите решить задачку, есть готовая программа, нужно только подставить значения. Сам в делфи и паскале вообще 0! А завтра сдавать зачет....

Математика в датах
Привет, снова проблема с программой. Получилось сохранять дату в файл и достать её от туда. Но как сделать так чтобы эта дата( а она...

дискретная математика
1)Задать множество А случайным образом из k элементов, каждый из элементов взять из диапазона (повторяющиеся элементы удалить). Задать...

Комплексная математика в Delphi 10.1 Berlin Update 2
На одном из этапов аналитического решения кубического уравнения необходимо вычислить выражение ...

Логическая математика
Добрый день. Я не до конца понимаю двоичную с/с, логическую математику, операторы or, xor и т.п. Вот хоть стреляйте, не врубаюсь... Итак,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru