SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.05.2010 12:54:21

rocalimon
Участник
Зарегистрирован: 17.05.2010
Сообщений: 5

Считать до первого положительного

День добрый!

Имеется таблица:
Date           Value
2009-03-03   -1
2009-03-04   -1
2009-03-05   -1
2009-03-06   -1
2009-03-07   -1
2009-03-08   1
2009-03-09   -1
2009-03-10   0
2009-03-11   0
2009-03-12   0
2009-03-13   0
2009-03-14   0
2009-03-15   1

Как посчитать количество отрицательных чисел до первой единицы на определенную дату. Т.е. дата 2009-03-05 3 отр. числа  до первой единицы вниз!
Помогите пжл.

Отредактированно rocalimon (17.05.2010 13:01:33)

Неактивен

 

#2 17.05.2010 15:21:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Считать до первого положительного

Если у Вас всегда ровно по 1 строке на день, то

SELECT DATEDIFF(`Date`, '2009-03-05')
FROM tablename
WHERE `Date` >= '2009-03-05' AND VALUE >= 0
LIMIT 1;

Неактивен

 

#3 17.05.2010 16:14:56

rocalimon
Участник
Зарегистрирован: 17.05.2010
Сообщений: 5

Re: Считать до первого положительного

Спасибо огромное!!! Все работает!!

Неактивен

 

#4 28.05.2010 10:46:46

rocalimon
Участник
Зарегистрирован: 17.05.2010
Сообщений: 5

Re: Считать до первого положительного

Еще вопрос возник. Как сделать тоже самое, но до первой даты вверх??? Т.е. дата на убывание.

Неактивен

 

#5 29.05.2010 19:51:12

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Считать до первого положительного

Заменить >= на <= ?

Неактивен

 

#6 31.05.2010 11:52:15

rocalimon
Участник
Зарегистрирован: 17.05.2010
Сообщений: 5

Re: Считать до первого положительного

Нет так не работает. пробовал. Выдает бред.

Неактивен

 

#7 31.05.2010 19:43:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Считать до первого положительного

Приведите, пожалуйста, пример данных и пример бреда smile

Неактивен

 

#8 01.06.2010 12:10:39

rocalimon
Участник
Зарегистрирован: 17.05.2010
Сообщений: 5

Re: Считать до первого положительного

DATE           Value  User

'2009-06-03', 5, 123
'2009-06-04', -1, 123
'2009-06-05', -1, 123
'2009-06-06', -2, 123
'2009-06-07', -3, 123
'2009-06-03', 160, 124
'2009-06-04', -10, 124
'2009-06-05', -130, 124
'2009-06-06', -130, 124
'2009-06-07', -130, 124

Задача состоит в том чтобы посчитать количество дней с отрицательным значением VALUE с 2009-06-06 до первого положительного значения в прошлом, с группировкой по пользователю.

SELECT DATEDIFF('2009-06-06',`Date`) as kol, user
FROM tablename
WHERE `Date` <= '2009-03-06' AND VALUE >= 0
group by  user

результат:
date  user
4 123
4 124

Хотя должно быть по 3.
Если делать без группировки и только на одного пользователя 123, результат:

4
3

Т.е. правильное значение оказывается внизу.

Неактивен

 

#9 04.06.2010 02:18:40

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Считать до первого положительного

С группировкой, очевидно, работать не будет, т.к. LIMIT 1 всё же нужен.
и ORDER BY `DATE` нужно добавить, как-то я его пропустил sad

А для разных пользователей проще всего сделать через подзапросы.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson