Выбор двух наборов данных, сгруппированных по отдельности - PullRequest
1 голос
/ 14 сентября 2011

Использование следующего запроса для выбора данных из таблицы с 15-минутными интервалами, когда точка имеет состояние = 1:

SELECT * , ROUND( UNIX_TIMESTAMP( log_date ) / ( 15 *60 ) ) AS period
FROM  `site_node_point_states` 
WHERE state =1
AND site_node_point_id =  "11"
AND log_date
BETWEEN  '2011-09-12 13:00:00'
AND  '2011-09-12 13:00:00'
GROUP BY period
ORDER BY period ASC

Этот запрос выполняет именно то, что я хочу, на основе одного site_node_point_id, однакоЯ хотел бы иметь возможность добавить еще один site_node_point_id и сгруппировать его по period отдельно от других site_node_point_id данных.

Я использую PHP для выполнения этого запроса и хотел бы попробовать иограничить его одним запросом, а не циклически повторять мой текущий с другим site_node_point_id.

Очевидно, если бы я изменил AND site_node_point_id = "11" на AND site_node_point_id = "11" OR site_node_point_id = "14", он бы упорядочил данные как из site_node_point_id 14, так и11.

Есть ли в SQL решение сделать GROUP BY индивидуально для каждого набора данных на основе site_node_point_id, который я выбираю?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2011

Используйте GROUP BY site_node_point_id, period.Это должно сгруппировать ваши результаты сначала по site_node_point_id, а затем по периоду.

0 голосов
/ 14 сентября 2011

Это может быть то, что вы ищете:

SELECT * , ROUND( UNIX_TIMESTAMP( log_date ) / ( 15 *60 ) ) AS period
FROM  `site_node_point_states` 
WHERE state =1
AND site_node_point_id in ("11", "12")
AND log_date
BETWEEN  '2011-09-12 13:00:00'
AND  '2011-09-12 13:00:00'
GROUP BY site_node_point_id, period
ORDER BY site_node_point_id, period ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...