Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / GROUP BY и одинаковая дата / 7 сообщений из 7, страница 1 из 1
28.12.2011, 09:17
    #37596528
SamFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
Всем привет!
Подскажите, пожалуйста. У меня есть таблица, в ней мне необходимо сгруппировать столбцы и узнать, количество элементов которые вошли в группу, не учитывая те записи, у которых одна дата в группе. DISTINCT при группировки не работает. Пытался сделать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT DISTINCT 
                      P.CLIENT_ID, DBA.CLIENT.SURNAME, DBA.CLIENT.NAME, DBA.CLIENT.PATR, DBA.CLIENT.DEPART_ID, DBA.DEPART.NAME AS DNAME, 
                      DBA.SUBDEPART.NAME AS SDNAME, COUNT(P.CLIENT_ID) AS COUNTRES
FROM         DBA.PROTOCOL P INNER JOIN
                      DBA.CLIENT ON P.CLIENT_ID = DBA.CLIENT.CLIENT_ID LEFT OUTER JOIN
                      DBA.DEPART ON DBA.CLIENT.DEPART_ID = DBA.DEPART.DEPART_ID LEFT OUTER JOIN
                      DBA.SUBDEPART ON DBA.CLIENT.SUBDEP_ID = DBA.SUBDEPART.SUBDEP_ID
WHERE     EXISTS
                          (SELECT     OBJECT_ID, ZONE_ID, DATE_TIME, BU_ID, LINE_ID, NODE_ID, LOG_DT, WSTATION_ID, OPER_ID, CLIENT_ID, MESS_ID, MESS_TYPE, 
                                                   PROT_ID
                            FROM          DBA.PROTOCOL P2
                            WHERE      (P.CLIENT_ID = CLIENT_ID) AND (CONVERT(TEXT, P.DATE_TIME, 101) <> CONVERT(TEXT, DATE_TIME, 101)))
GROUP BY P.CLIENT_ID, DBA.CLIENT.SURNAME, DBA.CLIENT.NAME, DBA.CLIENT.PATR, DBA.DEPART.NAME, DBA.SUBDEPART.NAME, 
                      DBA.CLIENT.DEPART_ID
ORDER BY DBA.CLIENT.DEPART_ID
...
Рейтинг: 0 / 0
28.12.2011, 10:11
    #37596574
BirdIV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
SamFisher,

having не помогает?
...
Рейтинг: 0 / 0
28.12.2011, 15:27
    #37597305
SamFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
BirdIV,

Тогда просит, чтобы я в GROUP BY включил DATE_TIME. А тогда группироваться будет по дате, а мне этого не надо
...
Рейтинг: 0 / 0
28.12.2011, 15:46
    #37597344
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
в having указывается не поле, а агрегат. Почитайте документацию.
The HAVING clause restricts the rows returned by a query. It sets conditions for the GROUP BY clause similar to the way in which WHERE sets conditions for the SELECT clause.

The HAVING clause search conditions are identical to WHERE search conditions except that WHERE search conditions cannot include aggregates, while HAVING search conditions often do.
т.е. в вашем случае будет:
HAVING COUNT(P.CLIENT_ID)>1
...
Рейтинг: 0 / 0
28.12.2011, 16:55
    #37597535
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
SamFisher,

Запутанно излагаеш.
Или тебе надо так:
Код: sql
1.
having count(distinct date_time) = 1


Или тебе надо сначала включить групировку по дате, отфилтовать, снова сгрупировать без даты:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select a, b, c, ...
from (
   select a, b, c, date_time, ...
   from ...
   group a, b, c, date_time
   having count(*) = 1
 ) ss
group a, b, c 
...
Рейтинг: 0 / 0
30.12.2011, 11:54
    #37600115
SamFisher
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
mikron,

Да, спасибо большое, второе подходит. Как-то мне в голову сразу не пришло(
...
Рейтинг: 0 / 0
16.02.2012, 19:45
    #37666035
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GROUP BY и одинаковая дата
автор>> узнать, количество элементов которые вошли в группу, не учитывая те записи, у которых одна дата в группе

Может быть case when count(distinct date) > 1 then count(*) else min(-1) end
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / GROUP BY и одинаковая дата / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]