Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用每日和每周平均值计算前10个关注的URL_Sql_Postgresql - Fatal编程技术网

Sql 使用每日和每周平均值计算前10个关注的URL

Sql 使用每日和每周平均值计算前10个关注的URL,sql,postgresql,Sql,Postgresql,我在具有以下属性的表中存储了一长串URL监视历史记录: 时间戳:观看广告的时间戳 类别:URL类别,字符串,如“主页”、“图像”等 URL:URL 持续时间:为URL提供服务所用的时间 每个URL都有多个记录 我需要拿出一个输出,列出每个类别中最受关注的10个URL的以下内容: URL Category Last Days Average Duration Last Weeks Average Duration 理想情况下,我不希望创建函数/触发器。我正在研究CT

我在具有以下属性的表中存储了一长串URL监视历史记录:

时间戳:观看广告的时间戳

类别:URL类别,字符串,如“主页”、“图像”等

URL:URL

持续时间:为URL提供服务所用的时间

每个URL都有多个记录

我需要拿出一个输出,列出每个类别中最受关注的10个URL的以下内容:

URL       Category       Last Days Average Duration    Last Weeks Average Duration
理想情况下,我不希望创建函数/触发器。我正在研究CTE和分组集

一些样本数据是:

2017-03-01,'Home','www.url.com/home.php',50
2017-03-03,'Images','www.img.com/image.jpg',70
2017-03-01,'Home','www.net.com/home.php',60
2017-03-10,'Home','www.url.com/home.php',50
样本输出可以是:


排名前10位的URL包括类别、最后一天和上周的平均值

考虑使用
densite\u RANK()
窗口函数按持续时间对类别进行降序排序。顺便说一下,这是一个非常常见的SQL问题,即使有自己的标记

您的问题,并添加一些样本数据和基于该数据的预期输出。请
SELECT main.*
FROM
  (SELECT t.Timestamp, t.Category, t.URL, t.Duration,
          DENSE_RANK() OVER(PARTITION BY t.Category ORDER BY t.Duration DESC) AS 'Rank'
   FROM myTable t) AS main
WHERE main.Rank <= 10  
SELECT main.*
FROM
  (SELECT t.Timestamp, t.Category, t.URL, t.Duration,
          (SELECT Count(*) FROM mytable sub 
           WHERE sub.Category = t.Category AND sub.Duration >= t.Duration) AS Rank
   FROM myTable t) AS main
WHERE main.Rank <= 10