Ⅰ 關於oracle資料庫 sql的寫法 我想寫一個 關於年齡分組的sql 按1-30歲,31-50歲,50以上. 想分成這3個年齡段
SELECT COUNT(CASE WHEN AGE BETWEEN 1 AND 30 THEN 1 ELSE 0 END) AS 1-30歲
,COUNT(CASE WHEN AGE BETWEEN 31 AND 50 THEN 1 ELSE 0 END) AS 31-50歲
,COUNT(CASE WHEN AGE > 50 THEN 1 ELSE 0 END) AS 50以上
FROM TABLE_NAME;
這個語句就可以做到~
Ⅱ sql語句如何按年齡段和性別分組查詢,麻煩給個具體例子,年齡欄位是age,性別欄位是sex
1、建表:
CREATETABLE[dbo].[Users](
[Name][nvarchar](50)NULL,
[Age][int]NULL,
[Sex][nchar](10)NULL
)ON[PRIMARY]
GO
2、插入數據:
Ⅲ 用SQL語句查詢年齡分段的分組查詢 我的數據表格式如下
--不知道你要的是不是這樣的結果
CreatetableT
(
籍貫varchar(10),性別varchar(2),生日varchar(10)
)
insertintotvalues('四川','男','19890627')
insertintotvalues('新疆','男','19930711')
insertintotvalues('河南','男','19890623')
insertintotvalues('四川','女','19880512')
insertintotvalues('新疆','男','19950425')
insertintotvalues('河南','女','19800304')
Select籍貫,性別,
Sum(CaseWhen年齡<=20Then1Else0End)As[0-20歲(人)],
Sum(CaseWhen年齡Between21And40Then1Else0End)As[21-40歲(人)],
Sum(CaseWhen年齡Between41And60Then1Else0End)As[41-60歲(人)],
Sum(CaseWhen年齡>=61Then1Else0End)As[60歲以上(人)]
From
(
Select*,Year(GETDATE())-Year(convert(Datetime,生日))As年齡
Fromt
)s
GroupBy籍貫,性別
withrollup
Ⅳ 關於年齡段查詢的sql語句:怎麼寫出來呀 年齡段 人數 百分比 男 女 合計 男 女 0-10 11-20 。 。
給一個示例,自己修改
SELECT '年齡段'=(case
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=25 THEN '25歲及以下'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=33 THEN '26歲-33歲'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=41 THEN '34歲-41歲'
else '41歲以上'
END),
COUNT(FID) AS 人數,
CAST(
LEFT(
ROUND(100.00 * COUNT(FID) / (SELECT COUNT(FID) AS total
FROM tperson
WHERE FEmployState='正式'),
2),
5)
AS VARCHAR) + '%' AS 百分比
FROM TPERSON
WHERE FEmployState IN ('正式')
GROUP BY
(case
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=25 THEN '25歲及以下'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=33 THEN '26歲-33歲'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=41 THEN '34歲-41歲'
else '41歲以上'
END)
Ⅳ 如何寫一個sql語句能根據出生日期按年齡段統計人數
你需要使用兩種SQL語句:
COUNT( )
BETWEEN
然後你的資料表要有紀錄年齡,或是至少要有出生日期。
大概的語法如下:
SELECT COUNT( 欄位名 ) FROM 資料表 WHERE 年齡 BETWEEN '40' and '50'
欄位名:不能是可以允許NULL值的欄位,有NULL的資料不會計算在內。
資料表:你要抓資料的那個資料表。
BETWEEN '40' and '50':意思是介於40~50歲。
Ⅵ 用sql語句實現年齡分段統計
先將年齡除10取整
select floor(年齡/10) as age from 表
再根據年齡整數分組統計
select age ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
這樣基本效果就出來了,達到樓主的要求就要加如函數計算了
sql語法
select convert(varchar,age*10)+'--'+convert(varchar,(age+1)*10) ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
oracle語法
select age*10 || '--'|| (age+1)*10 ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
Ⅶ SQL語句按年齡分組,統計各個年齡的人數
先確保你的出生年月是datetime的日期類型,語法如下。
select case when datediff(year,出生年月,getdate()) <= 20 then '20歲年齡段'
when datediff(year,出生年月,getdate()) between 21 and 25 then '21-25年齡段'
else '25以上年齡段' end as 年齡段,count(1) as 年齡段人數
from 表
group by
case when datediff(year,出生年月,getdate()) <= 20 then '20歲年齡段'
when datediff(year,出生年月,getdate()) between 21 and 25 then '21-25年齡段'
else '25以上年齡段' end
也可以試試
select sum(case when datediff(year,出生年月,getdate()) <= 20 then 1 else 0 end) '20歲年齡段',
sum(case when datediff(year,出生年月,getdate()) between 21 and 25 then 1 else 0 end) '21-25年齡段',
sum(case when datediff(year,出生年月,getdate()) > 25 then 1 else 0 end) '25以上年齡段'
from 表
Ⅷ SQL統計年齡段
例如:
select case when [年齡] BETWEEN 10 AND 20 then '10-20'
when [年齡] BETWEEN 20 AND 30 then '20-30'
when [年齡] > 30 then '30以上' end as '年齡段',
count(*) as '人數' FROM [Table]
Ⅸ xml文件里如何寫sql語句實現年齡分組
xml 文件中 小於號 < 要用 < 代替吧。
selectt1.p1asnum1,t2.p2asnum2,t3.p3asnum3,t4.p4asnum4,t5.p5asnum5from
(selectcount(age)asp1frompersonwhereage>=0andage<11)t1INNERJOIN
(selectcount(age)asp2frompersonwhereage>=11andage<21)t2INNERJOIN
(selectcount(age)asp3frompersonwhereage>=21andage<31)t3INNERJOIN
(selectcount(age)asp4frompersonwhereage>=31andage<41)t4INNERJOIN
(selectcount(age)asp5frompersonwhereage>=41andage<51)t5
希望能幫到你