❶ 用sql語句實現數據篩選
--將欄位條件篩選建立臨時表
selecttop100*
into#temp
fromtable
wherenamenotin("%批發%","不含'%廠")
andregionin("餐飲",..."副食")--填寫完每個經營面
--返回數據表,企業數和個體戶,這個區分不知道用什麼,所以第二個欄位還需要改
selectprovince,count(distinctname)asnum_company,
casewhenname="個體戶"thencount(distinctname)asnum_indivial
from#temp
❷ 取樣統計的SQL語句怎麼寫
oracle查詢語句: select 欄位名 from 表名 (where 判斷條件); oracle的統計函數(count) select count(欄位名),欄位1,欄位2 from 表名 (where 判斷條件) group by 欄位1,欄位2;
❸ 如何在sql中隨機抽樣
如果是隨機從表中選出N條記錄的話:
SELECT TOP(N) *
FROM [表明]
ORDER BY newid()
❹ 請教大神,查詢SQL等間距抽樣如何實現(資料庫oracle)
撰寫存儲過程,定義變數i每次加10,1作為一個特殊的id來進行處理,
如果不寫存儲過程,建議創建一個步長為10的序列,建立一個臨時表a,插入序列值,然後用業務表關聯a表。
❺ sql如何進行分層隨機抽樣
--按大、中、小
分別選取
然後再組合
--按新欄位重新排序後,你選出來的就是隨機的了
select
top
60
percent
*
from
table_1
where
A='大'
order
by
B
union
all
select
top
60
percent
*
from
table_1
where
A='中'
order
by
B
union
all
select
top
60
percent
*
from
table_1
where
A='小'
order
by
B
❻ MySQL高性能SQL注意事項簡述
資料庫作為應用開發中必不缺少的基礎設施,其性能直接影響應用的整體運行速度。MySQL是目前最廣泛使用的關系型資料庫之一,對於開發人員寫出性能良好的SQL是必備的基本技能之一。下面簡單描述下編寫SQL的注意事項。
編寫高質量的SQL需要從以下幾個方面注意,基本原則、表欄位注意事項、索引使用注意事項、SQL注意事項。
基本原則
一、盡量不要在資料庫里做運算。如果遇到運算盡可能在應用程序層進行計算。
二、控制資料庫表數量、控制單表數據量、控製表的欄位數。建議單庫不要超過四百張表,建議單表欄位不要超過五十個,建議單表的數據量不要超過一千萬。
三、不要編寫大SQL、不要使用大事務。SQL盡量寫的簡單點拒絕編寫大SQL,可以將大SQL拆分成多個小SQL,在應用層聚合。大事務拆分成多個小事務,快速提交。
表欄位注意事項
一、選擇合適數值欄位類型。能用小欄位類型的就用小欄位類型,如tinyint就比int(1)在表示小數據時合適。
二、能用數字表示就不要用字元。如可以用無符號INT存儲IP而不是字元串表示。
三、避免使用NULL欄位。原因NULL欄位查詢優化難,含NULL復合索引失效。
四、少用或拆分TEXT/BLOB欄位。欄位太大需要更多的空間,性能低下,如需使用拆分到單獨表。
五、不要在表欄位中存儲圖片。
索引使用注意事項
一、合理添加索引。索引添加太多會影響更新速度。能夠使用復合索引的避免加多個單獨索引。
二、字元欄位建立前綴索引。
三、不在索引列做運算。索引列做運算會導致索引失效。
四、盡量不使用外建。
SQL類注意事項
一、 SQL語句盡可能簡單。大SQL拆分成多個小SQL。
二、事務編寫盡量短小。事務即開即用用完立即關閉。
三、盡量不要使用select *。只取需要的列。
四、改寫OR為IN或者改寫為UNION操作。OR在數據量大的時候性能低於IN。
五、避免NOT、!=、>、NOT IN、NOT EXISTS、NOT LIKE等查詢。
六、避免%前綴模糊查詢。
七、能用UNION ALL不要用UNION。
八、GROUP BY中去除排序。自帶排序。
九、同類型的欄位做比較。字元類和字元類比較,數值類和數值類比較,不要混在一起比較。
十、盡量單表查詢,盡量不要多表關聯查詢。多表關聯查詢可以拆分成單表查詢在應用程序中聚合數據。
十一、復合索引的多列注意最左原則。
上述注意事項能避免很多性能低下的SQL,希望在開發過程中能引起注意。
❼ SQL在數據檢查中的應用
關於SQL在數據檢查中的應用
結構化查詢語言SQL是工業標准資料庫操作語言,在實踐中得到了廣泛運用,下面是我為大家搜索整理了關於SQL在數據檢查中的應用,歡迎參考閱讀,希望對大家有所幫助。想了解更多相關信息請持續關注我們應屆畢業生培訓網!
矢量地形圖是地圖要素的數字化表示,主要由屬性數據、拓撲數據和元數據三部分組成。屬性數據用於描述地理實體的類別、等級等質量特徵和數量特徵,拓撲數據用於描述地圖上點、線、面狀要素之間關聯、鄰接、包含等空間關系,元數據則包含了數據和信息資源的描述性信息。境外判繪生成的矢量數據是按照地形圖作業規范規定的標准格式;其數據的正確性、完備性、規范性的檢查是十分重要的環節。若能對數據屬性進行分類顯示,即按照某一屬性項(編碼、名稱、編號等)分類和排序,將有共同屬性的地圖目標排列在一起,將會給屬性檢查帶來很大的便利。現有的檢查軟體都會進行屬性項檢查,但是這種檢查方式比較單一,不能自己定義查找方式,且操作比較繁瑣,所以需要尋找一種能對屬性數據進行快速查詢、分析的方法。
一、屬性數據文件記錄格式
屬性數據文件由點記錄、線記錄、面記錄三部分組成。點、線、面記錄各部分都有一個類首記錄和若干中間記錄,以文本方式存儲。
作業中使用的式矢量地形圖數據是嚴格按照生產記錄格式組織、存儲的,具有嚴謹規范的數據結構,很自然我們可以利用資料庫來實現屬性數據的查詢分析。
二、操作流程
要實現這一設想,方法有很多,可以利用EXCEL、ACCESS導入分析,也可以編程直接讀取屬性數據文件。筆者採用的方法是將屬性文件讀入MDB資料庫,利用SQL語言進行自定義查詢,並輸出結果的方式。流程圖如下:
按圖幅建立的mdb資料庫中為每個圖層建立一個數據表,用於存儲每層的.屬性數據。數據表的結構(欄位名稱、數據類型、長度等)應按照軍標格式設置,避免出現轉換時數據丟失。利用自編程序將屬性文件中的記錄逐個讀入資料庫,在查詢語句框中輸入SQL語句即可進行數據篩選。通過分類篩選,將同類地物放在一起比較,就可以很輕松的檢查出地物屬性是否存在遺漏和錯誤。若需輸出查詢結果,程序可根據相應的坐標文件生成err文件,以供在freescan中檢查修改。程序利用VB6.0+數據控制項的方式實現,主界面如下:
三、利用SQL實現屬性數據查詢分析
結構化查詢語言SQL是工業標准資料庫操作語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統,在實踐中得到了廣泛運用。它以記錄集合作為操作對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語句可以嵌套,這使他具有極大的靈活性和強大的功能。
SQL語言包含4個部分 數據定義語言(如CREATE、DROP、ALTER等語句)、數據操作語言(如INSERT、UPDATE、DELETE語句)、數據查詢語言(如SELECT語句)、數據控制語言(如GRANT、REVOKE、COMMIT、ROLLBACK等語句)。我們最常用到的SQL包括選擇列表、FROM子句和WHERE子句,它們分別說明所查詢列、查詢的表、以及搜索條件等。
通過SQL語句的組合可以實現更多復雜的查詢,實現對數據的分析與篩選。
如進行獨立房與街區名稱指針的掛接SQL語句:
SELECT * FROM 居民地C WHERE (居民地C.注記編號=Any (select 注記編號 from 居民地C where 居民地C.編碼=130204)) and 注記編號<>0 and 編碼=130201;
這是查找街道名未掛指針的SQL語句:
SELECT * FROM 注記R
WHERE 注記R.編碼=280338 and (注記R.注記號 NOT in (select 陸地交通D.注記編號 from 陸地交通D));
通過修改SQL語句就可以非常靈活的實現各種查詢和篩選。為了方便操作,還可以將各種條件的查詢語句存放在一個文本文件中,隨時調用。
本文主要介紹了利用SQL語句在資料庫中對矢量地形圖屬性數據進行分析檢查的一種方法,這種方法在往年的數據入庫中是可行的,且在一定程度上提高了作業效率。在當前進行境外數字判繪過程中,需要我們通過實踐不斷總結和探索新的更有效的作業方法,高質量、高效率圓滿完成任務。
;❽ SQL Server 2008 不放回抽樣演算法及代碼寫法
declare@aint,@bint,@cint,@dint,@eint,@fint,@gint
set@g=1
select@a=right(rand(),5)--模擬隨機五個數字
select@b=@a/10000,--求出萬位的單個數字
@c=(@a-@b*10000)/1000,--求出千位的單個數字
@d=(@a-@b*10000-@c*1000)/100,--求出百位的單個數字
@e=(@a-@b*10000-@c*1000-@d*100)/10,--求出十位的單個數字
@f=@a-@b*10000-@c*1000-@d*100-@e*10--求出個位的單個數字
if(@f-@e=1)--比較每個相鄰的數字是否連續數字,如果是的話累計加1
set@g=@g+1
if(@e-@d=1)--比較每個相鄰的數字是否連續數字,如果是的話累計加1
set@g=@g+1
if(@d-@c=1)--比較每個相鄰的數字是否連續數字,如果是的話累計加1
set@g=@g+1
if(@c-@b=1)--比較每個相鄰的數字是否連續數字,如果是的話累計加1
set@g=@g+1
if(@b-@a=1)--比較每個相鄰的數字是否連續數字,如果是的話累計加1
set@g=@g+1
if(@g=1)--如果計數變數還是初始值1的時候,把變數清0。
set@g=0
printconvert(varchar(10),@a)+'='+convert(varchar(10),@b)+'+'+convert(varchar(10),@c)+'+'+convert(varchar(10),@d)+'+'+convert(varchar(10),@e)+'+'+convert(varchar(10),@f)+'一共有'+convert(varchar(10),@g)+'位連續數字'--顯示結果
--最後不知道你需要插入的目標表是什麼,你只好自己插入了。
--如果幫到你的話,請採納~~謝謝。