powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Интересная выборка..., помогите, а? ;)
4 сообщений из 4, страница 1 из 1
Интересная выборка..., помогите, а? ;)
    #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
Интересная выборка..., помогите, а? ;)
    #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
Интересная выборка..., помогите, а? ;)
    #32526151
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь
Код: plaintext
1.
2.
3.
.....
.... IF(time BETWEEN  1072908000  AND  1075586399 ,key,NULL))
...
 

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


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