Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2014, 15:28   #1
n@TS
 
Регистрация: 20.08.2009
Сообщений: 4
По умолчанию Среднее значение по 7 полям по заданному диапазону дат и условием вхождения критерия в список

Здравствуйте! помогите советом.. никак не получается решить задачу:
Требуется найти среднее значение по 7 полям за каждый день месяца при условии вхождения значения поля silos в список (1,3,7,9). Пример таблицы по которой идет выборка во вложении...
то есть что бы получилась выборка вида:
дата тонкость
01.05.2014 4
02.05.2014 3,72
Вложения
Тип файла: doc data.doc (49.0 Кб, 12 просмотров)
n@TS вне форума Ответить с цитированием
Старый 08.08.2014, 15:38   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

МБ ты скинешь таки листинг создания этой таблицы?

Код:
CREATE TABLE...
INSERT ..
rrrFer вне форума Ответить с цитированием
Старый 08.08.2014, 15:42   #3
n@TS
 
Регистрация: 20.08.2009
Сообщений: 4
По умолчанию

SELECT silos1.data, silos1.silos, silos1.tonkost, silos1.tonkost2, silos1.tonkost3, silos1.tonkost4, silos1.tonkost5, silos1.tonkost6, silos1.tonkost7
FROM silos1
WHERE (((silos1.silos) In (1,3,7,8,9)))
GROUP BY silos1.data, silos1.data, silos1.silos, silos1.tonkost, silos1.tonkost2, silos1.tonkost3, silos1.tonkost4, silos1.tonkost5, silos1.tonkost6, silos1.tonkost7
HAVING (((silos1.data) Between [par1] And [par2]));

Последний раз редактировалось n@TS; 08.08.2014 в 16:12.
n@TS вне форума Ответить с цитированием
Старый 08.08.2014, 15:58   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

AVG(IsNull(tonkost,0)+IsNull(tonkos t2,0)+...+IsNull(tonkost7,0))
GROUP BY Data
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2014, 12:33   #5
n@TS
 
Регистрация: 20.08.2009
Сообщений: 4
По умолчанию

Хелп ми..плиз не так считает запрос у него: если (2+4+6)+(3+7)= 9 (получает как 4+5 ) а должно то по идее 22/5=4,4

SELECT Avg(IIf(IsNull(tonkost),0,tonkost)+ IIf(IsNull(tonkost2),0,tonkost2)+II f(IsNull(tonkost3),0,tonkost3)+IIf( IsNull(tonkost4),0,tonkost4)+IIf(Is Null(tonkost5),0,tonkost5)+IIf(IsNu ll(tonkost6),0,tonkost6)+IIf(IsNull (tonkost7),0,tonkost7)) AS srznach,data
FROM silos1
WHERE (((silos1.silos) In (1,3,7,8,9)))
GROUP BY silos1.data
HAVING (((silos1.data) Between par1 And par2));

то есть если из "тонкостей" только один вид есть - то правильно, если больше - то уже нет
решено:
SELECT a.data, Avg(a.sum) AS srznach
FROM (SELECT data,
(
(IIf(IsNull(tonkost),0,tonkost)+IIf (IsNull(tonkost2),0,tonkost2)+IIf(I sNull(tonkost3),0,tonkost3)+IIf(IsN ull(tonkost4),0,tonkost4)+IIf(IsNul l(tonkost5),0,tonkost5)+IIf(IsNull( tonkost6),0,tonkost6)+IIf(IsNull(to nkost7),0,tonkost7))
/
(IIf(IsNull(tonkost),0,1)+IIf(IsNul l(tonkost2),0,1)+IIf(IsNull(tonkost 3),0,1)+IIf(IsNull(tonkost4),0,1)+I If(IsNull(tonkost5),0,1)+IIf(IsNull (tonkost6),0,1)+IIf(IsNull(tonkost7 ),0,1))
)
AS sum
FROM silos1
WHERE (((silos1.silos) In (5))) and (((silos1.data) Between par1 And par2))
) AS a
GROUP BY a.data;

Последний раз редактировалось n@TS; 22.08.2014 в 16:24.
n@TS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод строк по диапазону дат Pamhunt Microsoft Office Excel 4 20.06.2014 18:50
Поиск по диапазону дат в dbgrideh spotip Общие вопросы Delphi 17 07.05.2014 16:31
выборка из таблицы по диапазону дат strannick Microsoft Office Excel 4 12.12.2011 17:18