Sql 不同列按多个列选择和分组
我试图在Sql 不同列按多个列选择和分组,sql,postgresql,Sql,Postgresql,我试图在页面视图表中按访客id分组,以计算“访客”而不是“页面视图” 我的模式包括 id visitor_id country_code created_at 以下查询类型有效,但如果在同一分钟内有多条记录,则该分钟的计数将大于1,但该访客id的其他分钟将不存在 选择DISTINCT ON(访客id) 楼层(摘录(从已创建的位置开始的历元)/60) -楼层(提取(时区“utc”)处从现在开始的历元()/60) 几分钟后, 计数(不同的访客id)作为计数 从页面视图 按访客id分组,分钟; 更
页面视图
表中按访客id
分组,以计算“访客”而不是“页面视图”
我的模式包括
id
visitor_id
country_code
created_at
以下查询类型有效,但如果在同一分钟内有多条记录,则该分钟的计数将大于1,但该访客id的其他分钟将不存在
选择DISTINCT ON(访客id)
楼层(摘录(从已创建的位置开始的历元)/60)
-楼层(提取(时区“utc”)处从现在开始的历元()/60)
几分钟后,
计数(不同的访客id)作为计数
从页面视图
按访客id分组,分钟;
更新:
以下是一些示例数据和预期结果
+----+------------+-------------+
| id | visitor_id | created_at |
+----+------------+-------------+
| 1 | 1 | 1571520145 |
| 2 | 1 | 1571520085 |
| 3 | 3 | 1571520085 |
+----+------------+-------------+
这将基本上为每个不同的分钟返回1个计数,因此它实际上只对每个唯一的访问者进行计数,而不考虑“分钟”
我正在尝试在页面视图表上按访问者id分组,以计算“访问者”
如果您想按访客分组,则group by visitor\u id
就是您想要的。然后,问题就变成了你对每一位访客的计数。如果您想计算每个访问者在数据中出现的次数,count(*)
会这样做<代码>计数(不同的访客id)
是不必要的;我们已经在按访客分组了
你似乎也想知道关于每位访客的分钟数。不管它是什么,它都是某种聚合,可能是sum()
。如果是这样,您的查询可以简化为标准SQL,格式如下:
select
visitor_id,
sum( FLOOR(EXTRACT(epoch from created_at) / 60)
- FLOOR(extract(epoch from now() at time zone 'utc') / 60) )
as minutes,
count(*) as count
from page_views
group by visitor_id
分组依据
的一般规则是,SELECT中不在分组依据中的所有内容都必须是聚合。另一种思考方式是,select中未按分组的任何内容都是该组值的函数
我试图在页面视图表中按访问者id分组,以计算“访问者”而不是“页面视图”
我将把这解释为在特定的时间段想要独特的访客。这并不完全是这句话的意思,但它更符合这个问题
如果是这样,visitor\u id
不属于组BY
:
select (FLOOR(EXTRACT(epoch from created_at) / 60) -
FLOOR(extract(epoch from now() at time zone 'utc') / 60)
) as minutes,
count(DISTINCT visitor_id) as count
from page_views
group by minutes
order by minutes;
如果只想计算某人的首次访问次数,请使用子查询:
select (FLOOR(EXTRACT(epoch from created_at) / 60) -
FLOOR(extract(epoch from now() at time zone 'utc') / 60)
) as minutes,
count(DISTINCT visitor_id) as count
from (select visitor_id, min(created_at as created_at
from page_views
group by visitor_id
) v
group by minutes
order by minutes;
你说了你不想做的,但不是你想做的。如果按访问者id分组,“计数(不同的访问者id)”怎么可能大于1?@jjanes我基本上想计算每个唯一的访问者,而不是页面浏览量。示例数据和所需结果会有所帮助。如果你想计算唯一访客的数量,查询中的minutes
在做什么?@GordonLinoff我用一些示例数据和更好的解释更新了问题。我想将visitor\u id
的第一个实例基本上分组为minutes
,这样只返回一个visitor\u id
。基本上是访问者第一次访问页面时。