Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Итоговая сумма, кроме текущего месяца 
V
    Опции темы
MoLeX
  Дата 28.12.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Привет.
Не могу составить SQL запрос суммирующий общую сумму (поле sum) за все года, кроме текущего года и месяца

Код

CREATE TABLE IF NOT EXISTS `table` (
  `id` int(11) NOT NULL auto_increment,
  `index` int(11) NOT NULL default '0',
  `sum` float(10,2) NOT NULL,
  `year` int(4) NOT NULL,
  `month` int(2) NOT NULL
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
DimW
Дата 28.12.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Код

select sum(`sum`)
  from table
 where `month` != 12
   and `year` != 2009

PM MAIL ICQ   Вверх
Gudinya
Дата 28.12.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 2
Всего: 8



DimW
Сомневаюсь что это пройдет ;) советую проверить, а пока вариант от меня

Код

Select * From table t
Where `month` || `year` != '122009'


PM MAIL ICQ   Вверх
Deniz
Дата 28.12.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Gudinyaне вижу принципиальной разницы. увидел.

Это сообщение отредактировал(а) Deniz - 28.12.2009, 14:44


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
DimW
Дата 28.12.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Gudinya @  28.12.2009,  13:54 Найти цитируемый пост)
советую проверить

в чем собственно сомнения?
PM MAIL ICQ   Вверх
Akina
Дата 28.12.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

WHERE `month` != DateFormat(NOW(), '%c')
   and `year` != DateFormat(NOW(), '%Y')


Добавлено через 37 секунд
Но вообще хранить год и месяц по отдельности... мсье знает толк в извращениях...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Gudinya
Дата 28.12.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 2
Всего: 8



Для тех кто не видит разницы
вот пища для размышления
Код

With cur as (
  select 1 d, 1 m from dual
  Union all
  select 2, 1 from dual
  Union all
  select 3, 1 from dual
  Union all
  select 4, 1 from dual
  Union all
  select 5, 1 from dual
  Union all
  select 1, 2 from dual)
Select count(*) from cur c
Where c.d != 1
  and c.m != 2

и
Код

With cur as (
  select 1 d, 1 m from dual
  Union all
  select 2, 1 from dual
  Union all
  select 3, 1 from dual
  Union all
  select 4, 1 from dual
  Union all
  select 5, 1 from dual
  Union all
  select 1, 2 from dual)
Select count(*) from cur c
Where c.d || c.m != '12'


еподсказка, вы исключаете только декабрь 2009 гда или всех годов ?

Это сообщение отредактировал(а) Gudinya - 28.12.2009, 14:22
PM MAIL ICQ   Вверх
MoLeX
Дата 28.12.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Akina, знаю что извращение, но это требование  smile

Добавлено через 4 минуты и 54 секунды
Gudinya, только вот так:
Код

(`month` != '12' || `year` != '2009')


Добавлено через 5 минут и 2 секунды
всем спасибо, решил


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gudinya
Дата 28.12.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 2
Всего: 8



Цитата(MoLeX @  28.12.2009,  14:22 Найти цитируемый пост)
(`month` != '12' || `year` != '2009')

с таким синтаксисом не знаком, потому ничего сказать не могу, но смысл в том что выборка
Код

where `month` != 12  and `year` != 2009


привела бы к исключению ВСЕХ декабрей из перечисленной таблицы, а не только 2009

 smile люди, не нужно сразу обвинять автора поста меня или еще кого либо в том что он не прав, если уж собрались специалисты, то давайте приводить по возможности примеры того что человек заблуждается, а абстрактное ты не прав уж очень похоже на такой же как и этот  smile smile 
PM MAIL ICQ   Вверх
Deniz
Дата 28.12.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(Gudinya @  28.12.2009,  17:44 Найти цитируемый пост)
привела бы к исключению ВСЕХ декабрей из перечисленной таблицы, а не только 2009
я бы даже сказал всех декабрей и всего 2009 года. Вместо and в том примере нужно поставить or, что и сделал MoLeX.
 smile 
Gudinya, не надо так реагировать у всех бывает


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
DimW
Дата 28.12.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Deniz @  28.12.2009,  14:49 Найти цитируемый пост)
я бы даже сказал всех декабрей и всего 2009 года. Вместо and в том примере нужно поставить or

я бы предложил это:
Код

With cur as (
  select 1 d, 1 m from dual
  Union all
  select 2, 1 from dual
  Union all
  select 3, 1 from dual
  Union all
  select 4, 1 from dual
  Union all
  select 5, 1 from dual
  Union all
  select 1, 2 from dual)
  
Select * from cur c
Where not(c.d  = 1 and c.m = 2)


старемная фигня, пока не нашел как это матиматически представляется, имею ввиду свой вариант. 

Цитата(Gudinya @  28.12.2009,  14:44 Найти цитируемый пост)
не нужно сразу обвинять

спокойно, ни кто еще ни кого обвенить не успел.
PM MAIL ICQ   Вверх
DimW
Дата 28.12.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(DimW @  28.12.2009,  15:02 Найти цитируемый пост)
пока не нашел как это матиматически представляется

нашел:
отрицание(A коньюнкция B) = отрицание A дизьюнкция отрицание B
т.е. условие c.d  != 1 or c.m != 2 для этой задичи подходит, как и  not(c.d  = 1 and c.m = 2)


Gudinya, а про конкитенацию в булевой алгебре ни слова - http://ru.wikipedia.org/wiki/%D0%91%D1%83%...%B1%D1%80%D0%B0

раз уж речь о профессиональности пошла...  smile 

Это сообщение отредактировал(а) DimW - 28.12.2009, 15:26
PM MAIL ICQ   Вверх
Gudinya
Дата 28.12.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 2
Всего: 8



 smile 
Я ни к кому конкретно не обращался, обвинения могут быть прямые и косвенные.

Цитата(DimW @  28.12.2009,  15:20 Найти цитируемый пост)
а про конкитенацию в булевой алгебре не слова

)) улыбнул, получу наверное ошибку Error: You select contains сoncatenation in where case
т.е. приведение к дате и сравнение дат ты бы тоже искал в булевой алгебре?
PM MAIL ICQ   Вверх
Gudinya
Дата 28.12.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 2
Всего: 8




 smile напоследок
Извиняюсь если зацепил чувство кого либо
просто сын приболел чуть чуть и всю ночь не спал, ну и я с ним по этому желчь так и льётся smile  
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.