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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составление запроса 
:(
    Опции темы
ExlibrisUnios
Дата 8.6.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не могу составить запрос, который бы считал следующую штуку:

Таблица содержит значение вида low|high , где и low и high чила.

Например:

low |high
0 |8
10 |18
31 |30
140 |149 

Мне нужно, чтобы запрос вернул количество строк, которые отличаются от предыдущей строки по значению в группе (low или high) больше,чем на 10.

Например, верхний пример должен вернуть значение 2, так как предпоследняя строка отличается по значениям от предыдущей больше чем на 10 и последняя строка от предыдущей больше чем на 10 по значениям.

Спасибо!
PM MAIL   Вверх
Akina
Дата 8.6.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Пардон, не понял... а порядок следования строк какой сортировкой задан?


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

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


Чо?
****


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

Репутация: 53
Всего: 161



Код

select count(*)
from (
  select abs(low-lag(low) over (order by low)) dl
        ,abs(high - lag(high) over (order by high)) dh
  from (select 0 low, 8 high from dual
        union all select 10,18 from dual
        union all select 31,30 from dual
        union all select 140,149 from dual
  )
)
where dh > 10 or dl > 10


Добавлено через 4 минуты и 59 секунд
Если без выделываний
Код

-- тес данные
with t as(select 0 low, 8 high from dual
        union all select 10,18 from dual
        union all select 31,30 from dual
        union all select 140,149 from dual)
-- запрос
select count(*)
from (
  select low - (select max(low) from t t2 where t2.low<t1.low) dl
        ,high - (select max(high) from t t2 where t2.low<t1.low) dh
  from t t1      
  )
where dh > 10 or dl > 10

COUNT(*)               
---------------------- 
2                      

1 rows selected



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
bourne
Дата 9.8.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте, достопочтенные smile
Если ExlibrisUnios не против, то я задам вопрос свой тут smile Есть таблица:
id | let
--------
 1 | a
 2 | a
 2 | b
 3 | c
 4 | a
 4 | b

Как вытащить из нее 4 записи, чтоб получилось следующее:
id | let
--------
 2 | a
 2 | b
 4 | a
 4 | b
Т.е. нужны id'ы, у которых let равен и a и b.
СУБД: MySql
Пытаюсь делать так: 
Код

select id, let from test where let='a' and let='b';

Возвращает empty set
PM MAIL   Вверх
Akina
Дата 9.8.2009, 19:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

select t1.*
from test t1
join test t2
on t1.id=t2.id
where (t1.let='a' and t2.let2='b') or (t1.let1='b' and t2.let='a')



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

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


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Цитата(bourne @  9.8.2009,  18:22 Найти цитируемый пост)
Если ExlibrisUnios не против, то я задам вопрос свой тут

на будущее: не надо так делать.
твой вопрос с вопросом топикстартера совпадает только в плане использования SQL.
PM MAIL   Вверх
bourne
Дата 10.8.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Akina, спасибо! smile

Цитата(skyboy @  9.8.2009,  19:43 Найти цитируемый пост)
на будущее: не надо так делать.
твой вопрос с вопросом топикстартера совпадает только в плане использования SQL. 

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


 




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


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

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