1. 程式人生 > >Mysql——分組排序加序列號

Mysql——分組排序加序列號

CREATE TABLE IF NOT EXISTS `employee` (
  `empid` int(11) DEFAULT NULL,
  `deptid` int(11) DEFAULT NULL,
  `salary` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `employee` (`empid`, `deptid`, `salary`) VALUES
(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);
<span style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 14px; line-height: 21px; white-space: pre; widows: auto;">是這樣的我想實現新加一列代表每個部門的工資等級,比如</span><pre name="code" class="sql">+-------+--------+----------+
| empid | 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 |
+-------+--------+----------+
//實現下面結果
empid       deptid      salary         rank
+-------+--------+----------+------+--------
1           10          5500.00        1
2           10          4500.00        2
4           20          4800.00        1
3           20          1900.00        2
7           40          44500.00       1
6           40          14500.00       2
5           40          6500.00        3
9           50          7500.00        1
8           50          6500.00        2
SELECT empid,deptid,salary,rank FROM 
    (SELECT *,@rownum:[email protected]+1 AS rownum,IF(@pa=ff.deptid,@rank:[email protected]+1,@rank:=1) AS rank,@pa:=ff.deptid 
    FROM 
       (SELECT empid,deptid,salary FROM employee GROUP BY deptid,salary ORDER BY deptid ASC, salary DESC) ff,(SELECT @rank:=0,@rownum:=0,@pa=NULL) tt) result




相關推薦

Mysql——分組排序序列

CREATE TABLE IF NOT EXISTS `employee` ( `empid` int(11) DEFAULT NULL, `deptid` int(11) DEFAULT N

mysql 分組排序顯示序列 row_number()

mysql 分組排序顯示序列號 mysql沒有row_number()函式,如何實現分組排序顯示序列號 需求:要求分組統計後得出排名。如圖1,根據組織分組後按績效得分排名得圖2效果。 表名:pef_score (圖1) 組織

Mysql對查詢結果添序列

pda rom mysql 理解 lec 查詢 color AS span set @rownum=0; select @rownum:=@rownum+1 as rownum,* from table1 :=和=的區別? "=",只有在set和u

mysql分組排序序號

    根據產品品類編號分組後按照產品安全指數排序,並加序號。 SELECT id, product_classify_id, p_coefficient, rank FROM ( SE

MySQL 分組排序編號

原表: 目標: 將abcd分組後,每組分別加上編號 方法: 首先我們先實現一個簡單的效果:遞增編號,理解一下第一個點 SELECT @r:= @r + 1 AS rowNum, a.* FROM tmp_mytest a,(

Android配置build.gradle編譯release包以日期序列自增長為Version Code以及Version Name區分不同型別(三)

Android配置build.gradle編譯release包以日期加序列號自增長為Version Code以及Version Name區分不同型別(三) 前幾篇文章介紹瞭如何通過配置build.gradle實現在編譯release包時候,Version Code動態的以日期+序列號的形式自

Android配置build.gradle編譯release包時以日期時間序列為Version Code且Version Code自動增長(二)

Android配置build.gradle編譯release包時以日期時間加序列號為Version Code且Version Code自動增長(二) Android官方推薦以一個自然增長的整數值為Version Code,比如以基礎數值1為基礎,每次發一個release包時候Version值

C# Winform datagridview控制元件序列

//增加序列號 //該事件需要在datagridview 控制元件事件裡點出來,直接寫裡面的程式碼即可。 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)

mysql分組排序取最大值所在行,類似hive中row_number() over partition by

 如下圖, 計劃實現 :按照 parent_code 分組, 取組中code最大值所在的整條記錄,如紅色部分。(類似hive中: row_number() over(partition by)) select c.* from ( select a.*, (@i := ca

mysql分組排序取最大值所在行的實現方法

序號 sele 最大 logs tro ubi select order by 應該 如下圖, 計劃實現 :按照 parent_code 分組, 取組中code最大值所在的整條記錄,如紅色部分。(類似hive中: row_number() over(partition b

工作日誌21030724——高手在民間——為informix序列

          在oracle中一般都有row_number就搞定的簡單問題,到了informix中卻由於不支援窗體函式,報廢了。查閱informix手冊,竟然不能提供相應窗體函式。          但是,高手在民間,居然有人用純SQL就搞定了,悲催啊。      

mysql分組排序

建表create table tb_studscore_qlp(user_id varchar(10) charset utf8,type varchar(20) charset utf8,score int); insert into tb_studscore_qlp

mysql 分組排序 取第N條全部記錄 同時存在條件篩選

1.首先利用條件篩選出基本資料SELECT * from test where columna = 'xxx' AND columnb = 'xxx' and ......2.對基本資料分組並利用SUB

mysql 顯示行,以及分組排序

建表: CREATE TABLE `my_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_code` varchar(255) DEFAULT NULL, `code` varchar(255) DEFAULT NULL,

MySQL在按照某個欄位分組排序序號

#### 事情是這樣的,最近領導給了一個新的需求,要求在一張訂單表中統計每個人第一次和第二次購買的時間間隔,最後還需要按照間隔統計計數,求出中位數等資料。 - 由於MySQL不想Oracle那般支援行號、中位數等,所以怎麼在表中統計處資料成為了關鍵 #### 訂單表結構,主要包含欄位如下 - id、訂單號

mysql或者oracle分組排序取前幾條數據

esc rom group over nbsp oracle oracl 排序 _id mysql: select a.* from(select t1.*,(select count(*)+1 from 表 where 分組字段=t1.分組字段 and 排序字段<t

mysql 自動化序列,匯入檔案

1、匯入檔案,匯入檔案用“,”隔開 LOAD DATA LOCAL INFILE 'D:\\test.txt' INTO TABLE `cmdb_develop`.`RES_ATTRIBUTE` CHARACTER SET 'gbk' FIELDS ESCAPED BY '\\' TER

mysql分組排序操作

分組、排序操作                                    

mysql變數使用(leetCode中一分組排序題)

select      d.name as Department,     e. Employee,     e.Salary from (     select      temp.name as Employee,      temp.Salary,      temp.

mysql 查詢生成新的序列

select (@i:[email protected]+1) as i,a.* from sys_exam a,(select @i:=0) as it; 第一種方法: 複製