php - 如何使用此查询获取最多 10 行和 10 分钟的行?

标签 php mysql

我正在使用以下查询来查找与过去 2 天相比我的网页的pageviews 的差异

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 行具有最大的负差异。

我怎样才能做到这一点?

最佳答案

使用两个查询的联合,一个获得前 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;

关于php - 如何使用此查询获取最多 10 行和 10 分钟的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41577414/

相关文章:

php - 使用左连接从特定日期选择行

php - 检查表中是否存在数据

php - 替换表中所有现有数据

mysql - 通过Mysql计算一个月中的星期几

mysql - 如何在 MySQL 中创建一个包含多个随机值列的大表?

php - cakephp3根据类型将一个表链接到多个表

PHP、MySQL : Issue with bindParam

php - 连接mysql数据库出错

php - 如何使用 IN 根据值列表选择具有空值的行?

mysql - 如何在MySQL中获取 'Monday Date'?