sql 分組統計時的查詢及效率

2021-08-14 08:10:30 字數 1351 閱讀 5390

一張user表 裡面有id、國籍、出生日期等字段

現在要統計各個國家成年的人有多少、未成年的人有多少

結果如下圖所示 

第一種寫法:

select 

gjname,

(select count(0) from criminal_base_info where gjname=baseinfo.gjname and trunc(months_between(sysdate,csrq)/12,0)>=18) cn,

(select count(0) from criminal_base_info where gjname=baseinfo.gjname and trunc(months_between(sysdate,csrq)/12,0)<18) wcn

from

criminal_base_info baseinfo

where 

gjname is not null

group by gjname

第二種寫法:

select 

(a1.gjname),wcn,cn

from

(select gjname

from

criminal_base_info baseinfo

where 

gjname is not null

group by gjname

) a1

left join (

select count (baseinfo.id) as wcn,gjname

from

criminal_base_info baseinfo

where

trunc(months_between(sysdate,csrq)/12,0)<18

group by

gjname

) a2 on a1.gjname = a2.gjname

left join (

select count (baseinfo.id) as cn,gjname

from

criminal_base_info baseinfo

where

trunc(months_between(sysdate,csrq)/12,0)>=18

group by

gjname

) a3 on a1.gjname = a3.gjname

對比一下效率

7000+條資料的情況下

第一種:速度為0.08s~0.1s之間

第二種:速度穩定在0.06s

SQL查詢效率的討論

對於資料庫來說,查詢是資料庫的靈魂,那麼sql查詢效率究竟效率如何呢?下文將帶對sql查詢的相關問題進行討論,供您參考。乙個百萬級別的基本資訊表a,乙個百萬級別的詳細記錄表b,a中有個身份證id,b中也有身份id 先要找出a中在b的詳細記錄。s1 select b.from a inner join...

sql 如何提高SQL查詢的效率?

如何提高sql查詢的效率?原創猴子聊人物 發布於2019 10 31 21 00 00 閱讀數 11195 收藏 展開 題目 我們公司的資料量非常大,需要的不僅僅是提取資料,要了解sql方案優化的。一般在寫sql時需要注意哪些問題,可以提高查詢的效率?解題思路 資料量大的情況下,不同的sql語句,消...

mysql按日期分組統計的查詢

最近寫的乙個使用者資料統計相關介面,需要用到按照每天進行分組統計。select date format create time,y m d sum user id from orders where order state 2 group by date format create time,y m...