MySQL分組排序

2021-09-29 02:35:28 字數 2112 閱讀 9006

emp資料表建表語句:

create table emp(

empno int,

ename varchar(40),

job varchar(40),

mgr int,

hiredate varchar(40),

sal double,

comm int,

deptno int

);

插入資料準備:

insert into emp values (7349,'clerk','engineer',7510,'1980-04-07',9100,null,10)

;insert into emp values (7359,'smith','it',7540,'1991-05-07',7500,500,10)

;insert into emp values (7369,'will','develpoer',7270,'1996-12-07',6000,300,10);

insert into emp values (7500,'ron','engineer',7489,'1995-06-015',8500,null,20)

;insert into emp values (7510,'john','salesman',7648,'1989-08-04',7200,500,20)

;insert into emp values (7520,'fox','manager',7718,'1987-09-07',6000,300,20)

;insert into emp values (7600,'earth','clerk',7716,'1991-10-07',9500,3000,30)

;insert into emp values (7610,'zack','it',7634,'1992-06-05',8800,1500,30)

;insert into emp values (7620,'steven','engineer',7951,'1993-07-07',7500,null,30)

;

1、分析:每個部門、每個工種的薪水和:

1、可以建立乙個檢視:

create view sal

asselect

deptno,job,sum(sal+ifnull(comm,0)) as sal

from emp group by deptno,job;

2、select * from sal; 檢視中查詢資料

兩張表都是sal,一張表設為sal.a,另一張表設為sal.b;從結果集來看:這兩張表是一樣的

再插入一條資料後,再次進行sql查詢:

如果我們要取出top2的話,該怎麼修改sql?

select

a.*from sal a

where (

select count(*) from sal b

where a.deptno=b.deptno and a.sal < b.sal

)<= 1;

1、以部門公升序,薪水降序

select

a.*from sal a

where (

select count(*) from sal b

where a.deptno=b.deptno and a.sal < b.sal

)<= 1

order by a.deptno,a.sal desc;

mysql分組排序

sql的分組排序是乙個難點,在leetcode中是乙個hard級別的題目。筆者這兩天在工作中遇到了這麼乙個需求。取過去一段時間範圍內銷量前500的商品,然後取每個商品裡面銷量最高的sku,一共500個sku。取銷量前500的商品好求,但是這500對應的最高的sku不太容易,需要用到分組排序。筆者在工...

Mysql實現分組排序

資料 studenno studentname classno classname 2018140101 張三1401 14級一班 2018140111 孫一1402 14級二班 2018140121 李二1402 14級二班 2018140102 錢一1401 14級一班 2018140104 趙...

mysql 分組排序賦值

在實現介面平台功能時,有乙個這樣都場景 分組下的元素可以進行拖拽移動到該分組任意位置或者其他分組任意位置 每個分組下面所有的元素都有乙個排序序號,針對元素移動時 對原有分組下所有元素進行重新排序 對新加入對分組所有元素進行插入排序 為了更好對說明,我們建立一張這樣對錶 create table co...