Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Интересная выборка..., помогите, а? ;) / 4 сообщений из 4, страница 1 из 1
19.05.2004, 22:15
    #32524931
Ганга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная выборка..., помогите, а? ;)
Привет!

Есть таблица:
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE `mytable` (
  `id` int( 11 ) NOT NULL auto_increment,
  `time` char( 10 ) default NULL,
  `key` int( 11 ) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;
Соответственно, имеем набор записей вида: (время, признак).

Нижеприведенный запрос возвращает 5 значений - количества записей, попадающие в соответствующие интервалы:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT 
SUM(IF(time BETWEEN  1072908000  AND  1075586399 , 1 , 0 )) AS q1,
SUM(IF(time BETWEEN  1075586400  AND  1078091999 , 1 , 0 )) AS q2,
SUM(IF(time BETWEEN  1078092000  AND  1080766799 , 1 , 0 )) AS q3,
SUM(IF(time BETWEEN  1080766800  AND  1083358799 , 1 , 0 )) AS q4,
SUM(IF(time BETWEEN  1083358800  AND  1086037199 , 1 , 0 )) AS q5
FROM mytable 

ВНИМАНИЕ, ВОПРОС:
Как сделать, чтобы в качестве q* возвращались количества записей с уникальным key для каждого из интервалов?
т.е

time | key
1 | a
2 | a
3 | b
4 | c
5 | c
6 | a
7 | b
8 | b
9 | c

для интервала от 1 до 5 возвращалось не 5 (общее количество записей в интервале), а 3 (количество уникальных key: a, b, c)
для интервала от 6 до 9 - не 4, а 3

Фух... Надеюсь, понятно ;)
Ничего вразумительного придумать не могу...
Подскажите, пожалуйста, что к чему.
Спасибо!
...
Рейтинг: 0 / 0
20.05.2004, 14:07
    #32526134
Marat_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная выборка..., помогите, а? ;)
Попробуй
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT 
count(distinct IF(time BETWEEN  1072908000  AND  1075586399 ,time,NULL)) AS q1,
count(distinct IF(time BETWEEN  1075586400  AND  1078091999 ,time,NULL)) AS q2,
count(distinct IF(time BETWEEN  1078092000  AND  1080766799 ,time,NULL)) AS q3,
count(distinct IF(time BETWEEN  1080766800  AND  1083358799 ,time,NULL)) AS q4,
count(distinct IF(time BETWEEN  1083358800  AND  1086037199 ,time,NULL)) AS q5
FROM mytable 

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
20.05.2004, 14:11
    #32526151
Marat_L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная выборка..., помогите, а? ;)
Извиняюсь
Код: plaintext
1.
2.
3.
.....
.... IF(time BETWEEN  1072908000  AND  1075586399 ,key,NULL))
...
 

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
24.05.2004, 18:33
    #32531349
Ганга
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная выборка..., помогите, а? ;)
Большое спасибо, Marat_L, очень помог.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Интересная выборка..., помогите, а? ;) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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