val result = data.groupBy("booktype") .agg(round(avg("doubanscore"), 2).alias("avg_doubanscore")) .orderBy(col("avg_doubanscore").desc) .withColumn("rank", row_number().over(Window.orderBy(col("avg_doubanscore").desc)))我需要当平均数为8.0时,数据应该为8.0而非8
时间: 2023-11-17 21:05:36 浏览: 57
如果你希望在平均数为整数时显示小数点后的零,可以使用`format_number`函数来格式化结果。在你的代码中,你可以将`avg_doubanscore`列传递给`format_number`函数,并指定小数位数为一位。下面是修改后的代码示例:
```scala
import org.apache.spark.sql.functions._
val result = data.groupBy("booktype")
.agg(format_number(round(avg("doubanscore"), 2), 1).alias("avg_doubanscore"))
.orderBy(col("avg_doubanscore").desc)
.withColumn("rank", row_number().over(Window.orderBy(col("avg_doubanscore").desc)))
```
这样,当平均数为整数时,结果将会显示小数点后的一位零。例如,8.0而非8.
相关问题
val result = data.groupBy("booktype") .agg(avg("doubanscore").alias("avg_doubanscore")) .orderBy(col("avg_doubanscore").desc) .withColumn("rank", row_number().over(Window.orderBy(col("avg_doubanscore").desc))) 平均数位数太多,我只需要2位
如果你只需要保留两位小数,可以使用`round`函数来对结果进行四舍五入。在你的代码中,你可以将`avg_doubanscore`列传递给`round`函数,并指定保留两位小数的精度。下面是修改后的代码示例:
```scala
import org.apache.spark.sql.functions._
val result = data.groupBy("booktype")
.agg(round(avg("doubanscore"), 2).alias("avg_doubanscore"))
.orderBy(col("avg_doubanscore").desc)
.withColumn("rank", row_number().over(Window.orderBy(col("avg_doubanscore").desc)))
```
这样,`avg_doubanscore`列中的平均数将会保留两位小数。
val result = data.groupBy("booktype") .agg(format_number(round(avg("doubanscore"), 2), 1).alias("avg_doubanscore")) .orderBy(col("avg_doubanscore").desc) .withColumn("rank", row_number().over(Window.orderBy(col("avg_doubanscore").desc)))帮我改成根据booktype,对该类型下的评论条数进行统计,然后进行排名
你可以修改原始代码如下,以根据booktype对评论条数进行统计并排名:
```scala
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{col, count, row_number}
import org.apache.spark.sql.types.DoubleType
val result = data.groupBy("booktype")
.agg(count("*").alias("comment_count"))
.orderBy(col("comment_count").desc)
.withColumn("rank", row_number().over(Window.orderBy(col("comment_count").desc)))
result.show()
```
这段代码将根据booktype分组,使用count函数统计每个类型下的评论条数,并按照评论条数降序排序。然后使用row_number函数为每个类型添加排名。最后,使用show方法显示结果。
请确保你已经导入所需的包,并将`data`替换为你实际的DataFrame。
阅读全文