举例说明:

SELECT ROW_NUMBER
	() OVER ( ORDER BY starttime DESC ) "id",
	starttime AS "text",
	starttime 
FROM
	warning_products 
WHERE
	pid_model = '结果' 
	AND starttime IS NOT NULL 
GROUP BY
	starttime

在这一段代码中:

  1. 查询语句就不说了, select …from…where

  2. GROUP BY的作用:
    这一段代码执行的结果是:
    SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER 	() OVER ()的使用_自增
    如果将GROUP BY删除,那么执行结果为:
    SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER 	() OVER ()的使用_数据_02
    可以看到查询出了两个相同starttime数据.
    由此得出:
    GROUP BY的作用是分类汇总.也就是说,查询结果中,starttime每一种查询结果只有一个

  3. GROUP BY的作用:
    如果将DESC换成

    	() OVER ( ORDER BY starttime ASC ) "id",
    

    则运行结果为:
    SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER 	() OVER ()的使用_数据_03
    相比可以发现,ORDER BY的作用为进行排序.
    按照某种要求进行固定的排序

  4. ROW_NUMBER () OVER() “id”
    先来看一下,如果把这一段删掉,运行结果:
    SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER 	() OVER ()的使用_自增_04
    加上呢?
    SQL:postgresql中为查询结果增加一个自增序列之ROW_NUMBER 	() OVER ()的使用_数据_05

明显的对比,我们为最终的查询结果增加了一列自增的id序列(这里id可以改名,"id"改为其他的即可)

由此得到结论,在执行带有row_number() over() "xx"的SQL语句时候,代码会先执行查询语句,然后执行over中的命令,最后为结果增加一列自增的序列.