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

无法在SparkSQL中选择每个组的前10条记录

羊丰茂
2023-03-14
问题内容

嗨,我是Spark SQL的新手。我有一个这样的数据框。

  ---+----------+----+----+----+------------------------+
 |tag id|timestamp|listner| orgid |org2id|RSSI
 +---+----------+----+----+----+------------------------+
 |  4|1496745912| 362|   4|   3|                    0.60|
 |  4|1496745924|1901|   4|   3|                    0.60|
 |  4|1496746030|1901|   4|   3|                    0.60|
 |  4|1496746110| 718|   4|   3|                    0.30|
 |  2|1496746128| 718|   4|   3|                    0.60|
 |  2|1496746188|1901|   4|   3|                    0.10|

我想为每个列表器在Spark sql中选择前10个时间戳值。

我尝试了以下查询。它引发错误。

  val avg = sqlContext.sql("select top 10 * from avg_table") // throws error.

  val avg = sqlContext.sql("select rssi,timestamp,tagid from avg_table order by desc limit 10")  // it prints only 10 records.

我想为每个列表器选择我需要采用的前10个时间戳值。任何帮助将不胜感激。


问题答案:

这不行吗?

select rssi, timestamp, tagid
from avg_table
order by timestamp desc
limit 10;

编辑:

哦,我明白了。您要row_number()

select rssi, timestamp, tagid
from (select a.*,
             row_number() over (partition by listner order by timestamp desc) as seqnum
      from avg_table
     ) a
where seqnum <= 10
order by a.timestamp desc;


 类似资料:
  • 问题内容: 我试图从看起来像这样的数据库表结果中选择前2条记录 我试过这个查询 但是有些主题,例如失踪的地方,我什至尝试了以下链接的建议 如何选择每个组的前N行? 但是我为每个受检者得到两个以上 我究竟做错了什么? 问题答案: 您可以使用相关的子查询: 该查询通过串联三列来构造单列主键。如果您有真正的主键(如),则可以用代替。 SQL Fiddle中的示例。

  • 问题内容: 我有一张桌子,我想在该表格的基础上从每个组中获取前N个项目。如果我设置了那将从每个组中选择第一行,或者如果我设置了那那将从每个组中选择前5行。请帮我。 问题答案: 有多种方法可以做到这一点。这是一个使用相关子查询的查询:

  • 问题内容: 是否有更好的方法从MySQL表中获取多个“前X个”结果?当不同的 foo 的数量很少时,我可以通过联合轻松地完成此操作: 我显然可以继续为foo的每个值添加联合。但是,当foo有500多个不同的值并且我需要每个值的前X个时,这是不切实际的。 问题答案: 这种查询可以用“每组最大n”来表述,您希望每个“组”的前10个得分为“ foo”。 我建议您看一下这个链接,它很好地处理了这个问题,从

  • 问题内容: 例如,我有下表: 通过“ SELECT”命令选择每个组的前两个记录的最佳方法是什么?如果没有好的方法,您建议使用什么例程?(在PHP中) (模型结果) 我知道在子查询中通过a.id> = b.id进行交叉联接是可行的,但是我正在寻找一种可扩展性更高的解决方案,该解决方案可以应用于具有数百万条记录的表。谢谢 问题答案: SQLFiddle演示

  • 我有3个表,需要按以下方式提取记录 只选择Table_A中常见的记录,忽略Table_B和Table_C中不常见的记录,最终结果将不会重复。 尝试了方法1:将Table_A与Table_B内部连接,然后将Table_A与Table_C分离,最后进行了联合。 但我还是拿到了复制品。

  • 问题内容: 我们是postgres的新手,我们有以下查询,通过该查询我们可以从每个类别中选择前N个记录。 以上查询的输出是这样的 但是我们的要求有所不同,我们想从每个类别中选择前n%个记录,其中n不固定,n基于每个组中某些元素的百分比。 问题答案: 要基于每个组中行数的百分比来检索行,可以使用两个窗口函数:一个对行进行计数,另一个对行赋予唯一编号。 SQLFiddle示例:http ://sqlf