当前位置: 首页 > 面试题库 >

最近在分区上使用row_number()的SQL

韩羽
2023-03-14
问题内容

我正在处理一些Web点击数据,只是在查找带有访问的user_id(按时间戳记)的最新page_name。使用以下代码,将重复user_id,并显示page_name,并以降序排列。但是,我只希望last_click总是=1。完成后的查询将用作较大查询中的子查询。

这是我当前的代码:

 SELECT user_id,
 page_name,
 row_number() over(partition by session_id order by ts desc) as recent_click
 from clicks_data;

 user_id |  page_name  |  recent_click
 --------+-------------+--------------
 0001    |  login      |  1
 0001    |  login      |  2
 0002    |  home       |  1

问题答案:

您应该能够将查询移至子查询并添加where条件:

SELECT user_id, page_name, recent_click
FROM (
  SELECT user_id,
         page_name,
         row_number() over (partition by session_id order by ts desc) as recent_click
  from clicks_data
) T
WHERE recent_click = 1


 类似资料:
  • 问题内容: 好的,因此基本上我通过使用变得无用,我需要避免这种情况,因为这会导致重复的结果(当然,除了唯一的数字!) 因此,我要寻找的是一个查询,该查询将保持相​​同,但没有重复的行,因为num是唯一的: 修复起来可能很琐碎,但由于我不是SQL Server专家,所以我不习惯这些内部查询等。 更新:是的,num用于分页。 问题答案: 好像我晚两年我最近的博客帖子大约是到什么是对。您的CTE必须替换

  • type String(可选) - 以下之一: tasks - 此类别中的项目将被放置到标准的 Tasks 类别中。只能有一个这样的类别而且总是显示在跳转列表的底部。 frequent - 显示由应用程序频繁打开的文件的列表,类别的名称及其项目由Windows设置。 recent - 显示由应用程序最近打开的文件的列表,类别的名称及其项目由Windows设置。项目可以使用app.addRecent

  • 介绍 LRU (least recently used)最近最久未使用缓存。根据使用时间来判定对象是否被持续缓存,当对象被访问时放入缓存,当缓存满了,最久未被使用的对象将被移除。此缓存基于LinkedHashMap,因此当被缓存的对象每被访问一次,这个对象的key就到链表头部。这个算法简单并且非常快,他比FIFO有一个显著优势是经常使用的对象不太可能被移除缓存。缺点是当缓存满时,不能被很快的访问。

  • 问题内容: 以下两个查询之间是否存在性能差异?如果是,那么哪个更好?: 相对 (结果集应该相同) 这是假设没有设置索引。 更新:我对此进行了测试,并且速度更快。 问题答案: 分组依据应该更快。行号必须为表中的所有行分配一行。它会在过滤掉不需要的内容之前执行此操作。 到目前为止,第二个查询是更好的结构。首先,必须确保partition子句中的列与所需的列匹配。更重要的是,“分组依据”是SQL中一个易

  • 问题内容: 我正在寻找一种借助Elasticsearch查找最近价格/数量的可能性。问题是我没有范围。我要实现的是,结果按最近距离排序。根据示例搜索查询,我的索引包含3个具有以下价格(数字)的文档:45、27、32 给定数字与我的搜索值29的“距离”为45-29 = 16 | 27-29 = -2 | 32-29 = 3,所以我希望搜索结果是按“距离”评分的,该数字距离给定价格不远。 搜索查询示例

  • 问题内容: Iam试图弄清楚数据是在大约5分钟内保存到数据库的。 是Unix时间戳(1970年以来的毫秒)。 不起作用,我得到null而不是0,如果我使用 要执行操作,代码不会进入循环。 我也试过了 问题答案: Current_timestamp以SQL TIMESTAMP(而不是UNIX时间戳)的形式返回当前日期,因此您必须使用unix_timestamp函数进行转换: 编辑: 由于您的列中包含