Как получить 10 макс и 10 минут строк с этим запросом?

Я использую следующий запрос, чтобы узнать разницу в pageviews моих страниц, сравнивая последние 2 дня

 SELECT PAGE, COUNT( * ) AS poso, (SUM(DATE(TIMESTAMP) = CURDATE()) - SUM(DATE(TIMESTAMP) = DATE_SUB(CURDATE( ), INTERVAL 1 DAY)) ) diff FROM `behaviour` WHERE DATE( TIMESTAMP ) >= DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) GROUP BY PAGE; 

Запрос возвращает меня как страницы, как есть. Однако то, что я хочу сделать, – это иметь только 10 строк с наибольшей положительной разницей, а 10 – самую большую отрицательную разницу.

Как я могу это достичь?

Solutions Collecting From Web of "Как получить 10 макс и 10 минут строк с этим запросом?"

Используйте объединение двух запросов, один получает Top 10, а другой получает дно 10 . Запрос будет выглядеть так:

Обновленный ответ

 SELECT PAGE , poso , diff from ( ( SELECT PAGE, COUNT( * ) AS poso, (SUM(DATE(TIMESTAMP) = CURDATE()) - SUM(DATE(TIMESTAMP) = DATE_SUB(CURDATE( ), INTERVAL 1 DAY)) ) diff FROM `behaviour` WHERE DATE( TIMESTAMP ) >= DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) GROUP BY PAGE ORDER BY (SUM(DATE(TIMESTAMP) = CURDATE()) - SUM(DATE(TIMESTAMP) = DATE_SUB(CURDATE( ), INTERVAL 1 DAY)) ) desc LIMIT 10 ) UNION ( SELECT PAGE, COUNT( * ) AS poso, (SUM(DATE(TIMESTAMP) = CURDATE()) - SUM(DATE(TIMESTAMP) = DATE_SUB(CURDATE( ), INTERVAL 1 DAY)) ) diff FROM `behaviour` WHERE DATE( TIMESTAMP ) >= DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) GROUP BY PAGE ORDER BY (SUM(DATE(TIMESTAMP) = CURDATE()) - SUM(DATE(TIMESTAMP) = DATE_SUB(CURDATE( ), INTERVAL 1 DAY)) ) asc LIMIT 10 ) ) as u order by diff;