SQL開發例項和優化
找出連續的資料 如1,2,3,48,50,51,52,53,67,68
找出連續的數字的起點和重點
1,3
48,48
51,53
67,68
create table test.range_problem(
a int not null,
primary key (a));
insert into test.range_problem values(1);
insert into test.range_problem values(2);
insert into test.range_problem values(3);
insert into test.range_problem values(48);
insert into test.range_problem values(50);
insert into test.range_problem values(51);
insert into test.range_problem values(52);
insert into test.range_problem values(53);
insert into test.range_problem values(66);
insert into test.range_problem values(67);
--思路1 找最後一個不連續的數
SELECT T1.A
FROM test.range_problem T1
WHERE NOT EXISTS
(
SELECT A
FROM test.range_problem T2
WHERE T2.A -1 = T1.A
)
--思路2 找所有行對應的結束值
SELECT ROW_NUMBER()OVER(ORDER BY TBASE.A) ID
,TBASE.A
,(SELECT Min(A)
FROM test.range_problem T1
WHERE NOT EXISTS
(
SELECT A
FROM test.range_problem T2
WHERE T2.A -1 = T1.A
)
AND T1.A >= TBASE.A --T1.A 是3,48,53,67 TBASE.A 是每行的值
) A_END
FROM test.range_problem TBASE
--思路3 分組後找出所有連續的起始值和結束值
SELECT MIN(A) A_START, A_END
FROM(
SELECT ROW_NUMBER()OVER(ORDER BY TBASE.A) ID
,TBASE.A
,(SELECT Min(A)
FROM test.range_problem T1
WHERE NOT EXISTS
(
SELECT A
FROM test.range_problem T2
WHERE T2.A -1 = T1.A
)
AND T1.A >= TBASE.A --T1.A 是3,48,53,67 TBASE.A 是每行的值
) A_END
FROM test.range_problem TBASE
) T
GROUP BY T.A_END
--對上面語句的優化
WITH POT AS(
SELECT A
FROM test.range_problem T
WHERE NOT EXISTS
( SELECT A
FROM test.range_problem TC
WHERE TC.A -1 = T.A)
)
SELECT TBASE.A A_START,(SELECT MIN(A)
FROM POT T
WHERE TBASE.A <= T.A
) A_END
FROM test.range_problem TBASE
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750077/viewspace-2144653/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL優化例項SQL優化
- SQL優化例項-思路分析SQL優化
- 拜年+散分貼《Oracle SQL_TRACE和10046事件優化SQL例項》OracleSQL事件優化
- MySQL 優化例項MySql優化
- (轉)MySQL優化例項MySql優化
- 【SQL優化】SQL優化的10點注意事項SQL優化
- oracle優化一例之sql優化Oracle優化SQL
- DeviceMotionEvent程式碼優化例項dev優化
- Sql Server 2005開發新特性例項SQLServer
- PL/SQL優化一例SQL優化
- HP UNIX系統優化例項優化
- SQL語句優化方法30例SQL優化
- SQL觸發器例項講解SQL觸發器
- 分享一個SQLite 效能優化例項SQLite優化
- C# Winform程式介面優化例項C#ORM優化
- java多型-優化上個例項Java多型優化
- 優化 WebView 的載入速度例項優化WebView
- 無線頁面動畫優化例項動畫優化
- (轉)例項分析:MySQL優化經驗MySql優化
- sql優化一例(index_desc)SQL優化Index
- SQL語句優化方法30例(轉)SQL優化
- HarmonyOS開發例項:【相機和媒體庫】
- Java類初始化和例項化Java
- 聊聊索引和SQL優化索引SQL優化
- SQL TOP 例項SQL
- SQL資料庫觸發器例項SQL資料庫觸發器
- C#開發例項大全C#
- angular模組庫開發例項Angular
- jquery外掛開發例項jQuery
- ABAP 報表開發例項
- [MobX State Tree資料元件化開發][2]:例項-TodoList元件化
- ArcGIS開發(二)——一個基本視窗的例項化
- sql優化:開發人員應該要細心SQL優化
- SQL SERVER 日期相關性優化選項SQLServer優化
- 淺談mysql配置優化和sql語句優化MySql優化
- C++ 結構體例項和類例項的初始化C++結構體
- python開發例項-python開發案例Python
- css優化文字顯示效果程式碼例項CSS優化