Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];

Вниз

SQL-запрос с having   Найти похожие ветки 

 
Fishka   (2002-09-24 12:04) [0]

Запрос вида:
select DATA, VIL_OPER, sum(VIL_OB)
from "C:\aa.dbf"
group by DATA,VIL_OPER
having sum(VIL_OB)-VIL_OPER>1

выдает некорректный результат.

Возникает вопрос: можно ли использовать в предложении HAVING значение поля группировки VIL_OPER (заранее известно, что в группе значение VIL_OPER одно и то же)?


 
ЮЮ   (2002-09-25 06:15) [1]

>выдает некорректный результат.
не ожидаемый тобой результат не есть некорректный. Подробнее, какие данные есть и что хочешь получить?


 
Fishka   (2002-09-25 09:04) [2]

В каждой группе проставлено одно и то же значение VIL_OPER.
Мне нужно выбрать все группы, в которых сумма по полю VIL_OB больше, чем значение поля VIL_OPER на 1.
В итоге я получаю значения, у которых, например,
sum(VIL_OB)-VIL_OPER=0.00


 
ЮЮ   (2002-09-25 11:48) [3]

>В итоге я получаю значения, у которых, например, sum(VIL_OB)-VIL_OPER=0.00
так получаешь или нет? :-)

Группа это что? Записи с одинаковой DATA и VIL_OPER?
Допустим есть записи
01.01.01 12 3
01.01.01 12 4
01.01.01 12 10

02.01.01 12 2
02.01.01 12 2
02.01.01 12 10

02.01.01 14 10

Ты хочешь получить именно это?
01.01.01 12 17
02.01.01 12 14




 
Fishka   (2002-09-25 13:01) [4]

Да, именно это. Но этого я не получаю.
(Запись: 02.01.01 14 10 - такой записи не может быть, т.к. в группе значение VIL_OPER одинаково).


 
Fishka   (2002-09-26 10:48) [5]

Хочется получить ответ на вопрос:
можно ли использовать в предложении HAVING значение поля группировки?


 
Fishka   (2002-09-30 11:57) [6]

Может, кто-нибудь в предложении HAVING использовал значение поля группировки? Можно ли это сделать?


 
passm   (2002-09-30 12:18) [7]

Попробуй, вдруг получится:
SELECT T1.DATA, T1.VIL_OPER, T1.SUM_VIL_OB
FROM (SELECT Q1.DATA, Q1.VIL_OPEN, SUM(VIL_OB) AS SUM_VIL_OB
FROM "C:\aa.dbf" AS Q1
GROUP BY Q1.DATA, Q1.VIL_OPER) AS T1
WHERE T1.SUM_VIL_OB - T1.VIL_OPER > 1


 
Johnmen   (2002-09-30 13:33) [8]

>Fishka (30.09.02 11:57)

Можно ! Можно !
Запрос (24.09.02 12:04) корректен и работает правильно.


 
Fishka   (2002-09-30 15:27) [9]

>passm © (30.09.02 12:18)
Конструкция SELECT ...FROM (SELECT ...) не проходит с dbf-файлами.

Johnmen © (30.09.02 13:33)
Запрос может и корректен, но результат запроса неверный.


 
Johnmen   (2002-09-30 15:38) [10]

Результат запроса верный, т.е. полностью соответствует ожидаемому !
Если у тебя не так, то что-то ты недоговариваешь или делаешь неправильно.


 
roottim   (2002-09-30 15:54) [11]

навскидку попробуй
select DATA, VIL_OPER, sum(VIL_OB)
from "C:\aa.dbf"
group by DATA,VIL_OPER
having sum(VIL_OB)-max(VIL_OPER)>1


 
Fishka   (2002-09-30 16:58) [12]

>Johnmen © (30.09.02 15:38)
Если есть время и желание, то можете попробовать создать DBF файлик и сделать запрос такого вида.


>roottim (30.09.02 15:54)
Спасибо за совет, такой вариант запроса выдает верный результат.



 
Johnmen   (2002-09-30 17:12) [13]

Все уже попробовано и работает...

А вот дальше интересно...
Сначала ты хотел having sum(VIL_OB)-VIL_OPER>1
Теперь тебя устраивает having sum(VIL_OB)-max(VIL_OPER)>1

Думаю, не надо объяснять, что это разные вещи с разным результатом.


 
Johnmen   (2002-09-30 17:19) [14]

Виноват...Вещи разные, но результат один !


 
Fishka   (2002-10-01 09:04) [15]

Fishka (24.09.02 12:04)
заранее известно, что в группе значение VIL_OPER одно и то же

К сожалению, вещи разные, и результат разный.
Вы создали файлик и сделали запрос такого типа?
Или это просто рассуждения, теория?


 
Johnmen   (2002-10-01 09:55) [16]

(... having sum(VIL_OB)-VIL_OPER>1 )
1. Пробовал на реальной таблице IB-шной базы. (все Ок !)
2. Стандарт SQL92 не запрещает таких ограничений на группу.
3. Видимо, dBase, FoxPro не поддерживают такой синтаксис...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.10.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
6-68887
BAHO
2002-08-17 23:40
2002.10.21
NMUDP ???


14-68961
начинающий програмер
2002-09-25 20:30
2002.10.21
Delphi7


14-68990
AndryS
2002-09-29 14:31
2002.10.21
Мультимедия


1-68801
Blacker77
2002-10-08 05:03
2002.10.21
Сохранение массива Record ов в файл


1-68692
Mixvictor
2002-10-10 18:15
2002.10.21
Rxlib под Delphi6.0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский