【问题标题】:Is there a SQL function that restarts the row count every 3 rows?是否有一个 SQL 函数每 3 行重新开始行计数?
【发布时间】:2021-03-02 22:16:43
【问题描述】:

我想使用行计数功能每三行计数一次,以便我的输出类似于下图所示。我曾尝试使用 ROW_NUMBER、NTILE 和 RANK,但是我无法找到一种方法将分区或子集分成 3 个组。如何生成如下所示的行数?

Food Row Count
Apple 1
Banana 2
Pear 3
Grape 1
Orange 2
Avocado 3

【问题讨论】:

  • 如何对行进行排序?似乎没有订单。
  • 公平问题 - 表格应按食物的字母顺序排列。回想起来,我会以相同的 1,2,3,1,2,3 模式降序显示表格

标签: sql count subset partition row-number


【解决方案1】:

不,但您可以使用算术 - 假设您有一个指定排序的列。一个典型的方法是:

select t.*
       row_number() over (order by <ordering col>) % 3 as row_count
from t;

请注意,% 是模运算符。一些数据库出于相同目的使用MOD() 作为函数或中缀运算符。

【讨论】:

  • @DestructionBringer00 这个答案应该被接受。
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 2020-04-17
  • 1970-01-01
  • 2021-08-23
  • 2020-08-29
  • 2021-12-09
相关资源
最近更新 更多