# 创建数据库create database if not exists shopping charset utf8;# 选择数据库use shopping;# 创建产品表create table product( id int primary key, name varchar(20), price int, type varchar(20), address varchar(20));# 插入产品数据insert into shopping.product(id, name, price, type, address) values (1,'商品1',200,'type1','北京'), (2,'商品2',400,'type2','上海'), (3,'商品3',600,'type3','深圳'), (4,'商品4',800,'type1','南京'), (5,'商品5',1000,'type2','成都'), (6,'商品6',1200,'type3','武汉'), (7,'商品7',1400,'type1','黑龙江'), (8,'商品8',1600,'type2','黑河'), (9,'商品9',1800,'type3','贵州'), (10,'商品10',2000,'type1','南宁');
一、函数类型
group by 是分组函数,partition by是分析函数
二、执行顺序
from > where > group by > having > order,而partition by应用在以上关键字之后,可以简单理解为就是在执行完select之后,在所得结果集之上进行partition by分组
二、查询结果
partition by 相比较于group by,能够在保留全部数据的基础上,只对其某些字段做分组排序,而group by则保留参与分组的字段和聚合函数的结果,类似excel中的透视表
在OVER()中添加PARTITION BY
# 查询每种商品的id,name,同类型商品数量select id,name,count(*) over (partition by type) from product;
PARTITION BY传入多列
# 查询每个城市每个类型价格最高的商品名称select name, price, type, max(price) over (partition by address,type) as 'max_price'from product;
来源地址:https://blog.csdn.net/feizuiku0116/article/details/126127948