powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше организовать структуру?
7 сообщений из 7, страница 1 из 1
Как лучше организовать структуру?
    #32551625
Фотография fem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла такая ситуация. Есть некая таблица, в которую пишутся почасовые данные, основные поля:
tDate (дата)
tHour (час)
ID_CP (контрольная точка, по которой учитываются значения)
fValue (собственно, занчение. Точнее, таких полей 4, ну, будем считать, что одно.)
По этой таблице в конце каждой декады и месяца составляется отчет, в котором фигурируют средние и суммарные значения по каждой точке.
Теперь пользователи хотят вот что: в конце месяца они отчитываются числа 27-29, когда есть еще не все данные. И хотят, чтобы недостающие 3-4 дня рассчитывались по среднему значению за предыдущие дни месяца. Более того, чтобы эти значения хранились и после реального окончания месяца чтобы выдавался отчет - "плановые" значения, реальные и невязка.
Сижу вот соображаю, как это лучше сделать. Таблица довольно большая - контрольных точек около 100, по 24 часа на 30 дней, да 4 параметра посчитать. На "лету" - долго будет, да и глупо каждый раз это вычислять. Я сначала хотела просто заполнять по какой-нибудь кнопочке в основной таблице оставшиеся дни месяца средними значениями, а потом "накрывать" их реальными по мере поступления. Но тогда я не смогу выдать сравнительный отчет с невязкой. Добавлять поля в таблицу - тоже не хочется, т.к. заполненными будут только 3-4 дня в месяце. Попробовала сделать отдельную таблицу, в которой будут данные за эти 3-4 дня. Но получается, что нужно full join делать на основную таблицу и эту дополнительную, и в выборке смотреть - если в основной стоят NULL'ы, тогда брать данные из дополнительной. Запрос довольно долго отрабатывает. Мне кажется, тут надо как-то придумать со структурой что-то... а что еще можно придумать?
Прошу прощения, если путанно получилось.
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32551998
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать все гораздо проще. Бери период не 1 числа, а с такого же за прошлый месяц.

То есть, например, с 27.03 по 27.04. Вот и будет тебе среднее.
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32552265
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз есть и план и реальность, то надо хранить и то и другое, а то "позатирешь" данные - поди потом докажи, как оно было на самом деле.
Вообще, странная какая-то тут методика планирования - 3 последних дня. Может лучше про методики планирования вопрос изучить, тогда над структурой можно ломать голову со спокойной душой - а то мало ли какая им блажь в голову придет, будешь это реализовывать, а окажется, что постановка задачи в принципе не верна.
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32553336
Фотография fem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, это как бы не планирование как таковое. Просто они должны отчитаться за месяц, когда месяц еще не закончен. То есть, отчитываются как бы "авансом". В зависимости от наличия выходных в конце месяца - за 3-4 дня. И вот за эти 3-4 дня данные берут по среднему за предыдущие дни месяца.
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32553356
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы предложил подумать о таблице "Отчеты", в которой хранить как предварительные отчеты, так и реальные.
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32556866
olk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавить в табличку признак (поле) ПланФакт,
в обычном режиме заполнять с признком 1 (факт),
в конце месяца сгенерировать дополнительные
записи с признаком 0 (план) по среднему ...
далее в обычном режиме формируются данные
с признаком 1 (факт) в тех же контрольных точках ...
дальше наверное понятно как выбрать план/факт/невязку

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table TEST
(
  ID         NUMBER NOT NULL PRIMARY KEY,
  TDATE      DATE,
  THOUR      NUMBER,
  ID_CP      NUMBER,
  FVALUE        NUMBER,
  PRPLANFACT NUMBER default  1 ,

)

 -- план
 
SELECT * FROM test WHERE (prplanfact,id_cp) IN
(select MIN(prplanfact),id_cp from test t GROUP BY id_cp )
 -- факт
 
SELECT * FROM test WHERE (prplanfact,id_cp) IN
(select MAX(prplanfact),id_cp from test t GROUP BY id_cp )
...
Рейтинг: 0 / 0
Как лучше организовать структуру?
    #32557319
Фотография fem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, будем пробовать :-)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше организовать структуру?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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