聚合函数(只有一个返回值[用在数据表当中])AVG() 平均值select round(avg(goods_price),2) as avg_price from goods(取2位小数)count() 计数max() 最大值min() 最小值sum() 求和
ROW_NUMBER() OVER函数
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序
row_number() OVER(PARTITION BY)与 rank() OVER(PARTITION BY) 区别:前者有两个并列第一则返回一条记录,后者返回两条,同时是跳跃排序;dense_rank()是连续排序!!(mySql中不支持这种查询方法)
例子:
create table employee(id smallint unsigned primary key auto_increment,deptid varchar(20) default null,salary decimal(10,2));insert into employee (deptid,salary) values ('10',5500.00),('10',4500.00),('20',1900.00),('20',4800.00),('40',6500.00),('40',14500.00),('40',44500.00),('50',6500.00),('50',7500.00);
+----+--------+----------+| id | deptid | salary |+----+--------+----------+| 1 | 10 | 5500.00 || 2 | 10 | 4500.00 || 3 | 20 | 1900.00 || 4 | 20 | 4800.00 || 5 | 40 | 6500.00 || 6 | 40 | 14500.00 || 7 | 40 | 44500.00 || 8 | 50 | 6500.00 || 9 | 50 | 7500.00 |+----+--------+----------+
这种结构
需求:根据部门分组,显示每个部门的工资等级
预期结果

select *,row_number() over (partition by deptid order by salary desc) rank from employee;
但是mysql好像不支持,pg和oracle支持
