powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select с сумированием по условию
3 сообщений из 3, страница 1 из 1
Select с сумированием по условию
    #39450893
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изделие кристаллы (запуск) кристаллы (годные) коэффициент посадкиИзделие №1 100 96 32Изделие №2 10 8 8Изделие №2 8 8 10

Имеется таблица представленная выше. Операция соответствующая этой таблице - посадка кристаллов в изделие, где кристаллы(запуск) - количество кристаллов предназначенных для посадки. кристаллы(годные) - сколько было посажено. Кристаллы садятся кратно коэффициенту. Т.е. в первом случае из 100 кристалов будет посажено 1*32 + 1*32 + 1*32 = 96 (4 в остатке).

Внимание! Поле годные в реальной таблице не хранится, просто приведено для наглядности. Нужно посчитать количество годных.

Посчитать годные можно по формуле - INT(запуск/коэффициент)*коэффициент = Целая часть(100/32)*32 = 3 * 32 = 96.
Но, если коэффициент > запуск, то формула не работает и нужно просто брать значения "запуск." Например в случае №3 это будет 8.

Можем сделать так:
Код: sql
1.
select iif(коэффициент > запуск, запуск, INT(запуск/коэффициент)*коэффициент) as годные from таблица into таблицаГодных


Код: sql
1.
Select sum(годные) as summa from таблицаГодных



А можно так
Код: sql
1.
select iif(коэффициент > запуск, sum(запуск), sum(INT(запуск/коэффициент)*коэффициент)) as summa from таблица



Вопрос: корректен ли второй вариант (с одним селектом) и нет ли здесь подводных камней ? (По цифрам вроде работает, просто раньше никогда такого не делал).
...
Рейтинг: 0 / 0
Select с сумированием по условию
    #39450896
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно что второй вариант вообще работает. Ошибка должна быть, если только не VFP6 используется.
Надо sum(iif()), а не наоборот.

Код: sql
1.
Select sum(iif(коэффициент > запуск, запуск, INT(запуск/коэффициент)*коэффициент)) as summa  from таблица
...
Рейтинг: 0 / 0
Select с сумированием по условию
    #39450902
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP9, проверил только, что - iif(условие, sum(a), sum(b)) ошибки не выдает и вроде бы результат верный(хотя данных мало, чисто для теста делал). А насчет sum(iif()) - очевидное решение, туплю, видно я немного переработал =). Спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select с сумированием по условию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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