如何使用 ROW_NUMBER() 向 MySQL 显示添加行号

用户1972031

如何使用 ROW_NUMBER() 函数(必需)在 Mysql 表显示上显示行号?

mysql> select * from work;
+------+-----------+
| name | work_days |
+------+-----------+
| john |         5 |
| jane |         7 |
| jane |         2 |
| john |         3 |
+------+-----------+
4 rows in set (0.01 sec)

不使用 ROW_NUMBER():

mysql> SELECT name, 
    -> AVG(work_days) AS workday_average, 
    -> COUNT(*) as count
    -> FROM work
    -> GROUP BY name
    -> HAVING workday_average > 2
    -> ORDER BY workday_average ASC, count DESC;
+------+-----------------+-------+
| name | workday_average | count |
+------+-----------------+-------+
| john |          4.0000 |     2 |
| jane |          4.5000 |     2 |
+------+-----------------+-------+
2 rows in set (0.00 sec)

尝试使用 ROW_NUMBER() 添加行号列时出现以下错误。

mysql> SELECT name, 
    -> ROW_NUMBER() over(PARTITION BY name ORDER BY work_days) as row_num,
    -> AVG(work_days) AS workday_average, 
    -> COUNT(*) as count
    -> FROM work
    -> GROUP BY name
    -> HAVING workday_average > 2
    -> ORDER BY workday_average ASC, count DESC;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(PARTITION BY name ORDER BY work_days) as row_num,
AVG(work_days) AS workday_ave' at line 2
mysql> 
蒂姆·比格莱森

窗口函数在GROUP BY聚合发生后进行评估,因此在 上使用分区没有多大意义name,因为此时的每条记录都可以保证具有不同的名称。很可能,你想要这样的东西:

SELECT
    name, 
    ROW_NUMBER() OVER (ORDER BY AVG(work_days), COUNT(*) DESC) AS row_num,
    AVG(work_days) AS workday_average, 
    COUNT(*) AS count
FROM work
GROUP BY
    name
HAVING
   workday_average > 2
ORDER BY
    workday_average,
    count DESC;

但这当然假设您使用的是 MySQL 8+。如果没有,那么ROW_NUMBER将无法使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向特定实体的LINQ查询添加ROW_NUMBER?

来自分类Dev

使用SQL使用Row_Number()使用行号更新表

来自分类Dev

如何在Pentaho数据集成(水壶)中向文件添加行号?

来自分类Dev

Java:使用lambda向文件添加行号的一种优雅方法

来自分类Dev

如何向ngTable添加行

来自分类Dev

如何使用终端向文件添加行

来自分类Dev

从.sql文件向mysql表添加行

来自分类Dev

如何按字母顺序显示row_number

来自分类Dev

如何使用MySql数据库替换ROW_NUMBER()函数?

来自分类Dev

如何使用row_number()将行号分配给Postgresql中的重复值

来自分类Dev

如何“动画化”向JTable添加行

来自分类Dev

分页时如何向 UITableView 添加行?

来自分类Dev

如何向标准字典添加行为?

来自分类Dev

如何从用户控件向 dataGridView 添加行

来自分类Dev

使用jQuery向表添加行

来自分类Dev

使用JS向html表添加行

来自分类Dev

使用Sub向DataGrid添加行

来自分类Dev

使用jQuery向表添加行

来自分类Dev

使用AngularJS向表中添加行

来自分类Dev

使用row_number时MySQL中的子查询问题

来自分类Dev

如何使用其他数据向ggplot添加行?

来自分类Dev

如何在SQL中修改Row_Number语法,以便根据条件分配行号?

来自分类Dev

使用ROW_NUMBER()和where子句获取未过滤表中的行号

来自分类Dev

如何正确使用Row_Number()

来自分类Dev

向数据表添加行并使用组合框显示成员?

来自分类Dev

在python 3中向文件添加行号

来自分类Dev

在存储过程中向临时表添加行号

来自分类Dev

Vim - 从 1 开始向选择添加行号

来自分类Dev

Row_Number在行号之间