SQL根據分組求連續範圍
http://www.itpub.net/thread-1873736-1-1.html
Oracle:
MySQL
用相關子查詢實現Oracle row_number分析函式的功能,其餘一樣。
-
create table test (id int,name varchar(10));
-
insert into test values(11,'aaa');
-
insert into test values(12,'aaa');
-
insert into test values(13,'aaa');
-
insert into test values(15,'aaa');
-
insert into test values(16,'bbb');
-
insert into test values(17,'bbb');
-
insert into test values(18,'ccc');
-
insert into test values(19,'zzz');
- insert into test values(20,'zzz');
-
SELECT name, decode(COUNT(*), 1, to_char(MIN(id)), MIN(id) || '-' || MAX(id)) AS b
-
FROM (
-
SELECT id, name, MAX(rn) OVER (PARTITION BY name ORDER BY id) AS rn
-
FROM (
-
SELECT id, name, decode(id - LAG(id) OVER (PARTITION BY name ORDER BY id), 1, 0, id) AS rn
-
FROM test
-
)
-
)
-
GROUP BY name, rn
- ORDER BY name, rn;
-
SELECT NAME, decode(COUNT(*), 1, to_char(MIN(id)), MIN(id) || '-' || MAX(id)) AS b
-
FROM (
-
SELECT t.*, id - ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY ID) AS gp
-
FROM TEST t
-
)
-
GROUP BY NAME, gp
- ORDER BY NAME;
MySQL
-
SELECT name, CASE WHEN COUNT(*) = 1 THEN MIN(id) ELSE concat(MIN(id), '-', MAX(id)) END AS r
-
FROM (SELECT id, name, id - (
-
SELECT COUNT(*)
-
FROM test t1
-
WHERE t1.name = t2.name
-
AND t1.id <= t2.id
-
) AS rn
-
FROM test t2
-
ORDER BY name, id
-
) t1
-
GROUP BY name, rn
- ORDER BY name;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1196222/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL連續範圍問題MySql
- 根據生日求年齡的SQLSQL
- list集合根據某欄位分組
- oracle根據分組查百分比Oracle
- jdbc根據例項名 連線 sql serverJDBCSQLServer
- 關於數字的經典SQL程式設計:連續範圍問題SQL程式設計
- BIRT 中根據引數實現動態日期分組
- 基於tcp的http應用,斷點續傳,範圍請求TCPHTTP斷點
- SQL 如何在時間序列中根據欄位變化分組SQL
- 根據 Promises/A+規範 手寫 PromsiePromise
- 根據PID查詢 sqlSQL
- js物件陣列(JSON) 根據某個共同欄位 分組物件陣列JSON
- python-進階教程-根據欄位將記錄分組Python
- IP地址分類及範圍
- 地圖下載器 002 根據下載範圍獲取要下載的瓦片資訊地圖
- 根據系統spid 定位sqlSQL
- golang將切片或陣列根據某個欄位進行分組Golang陣列
- EBS(ERP)根據請求號(request ID)查詢正在執行的sqlSQL
- PostGIS特殊函式 ☞ 根據BOX3D查詢某一空間範圍內的物件函式3D物件
- C#根據當前時間確定日期範圍(本週、本月、本季度、本年度)C#
- Oracle如何根據SQL_TEXT生成SQL_IDOracleSQL
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- swift4.0 物件資料來源根據屬性分組,時間排序Swift物件排序
- 根據DELTA自動生成SQL語句SQL
- SQL分組SQL
- 根據Promises/A+規範實現一個原生PromisePromise
- 快速獲取json鍵值對的key名和快速根據value分組JSON
- 圖解:HTTP 範圍請求,助力斷點續傳、多執行緒下載的核心原理圖解HTTP斷點執行緒
- BIRT 統計圖中怎麼根據引數實現 X 軸動態分組
- 求字串連續字元數量字串字元
- MySQL運維8-Mycat範圍分表MySql運維
- oracle ebs 根據請求id找到對應trace 檔案Oracle
- laravel 中根據請求路徑、方法匹配路由例項Laravel路由
- BIRT 中如何根據引數動態拼接 SQLSQL
- SQL server根據表名查詢表主鍵SQLServer
- EF:根據實體類生成表結構SQLSQL
- 根據SQL_ID檢視執行計劃SQL
- 根據SQL Id獲得SQL語句的執行計劃SQL