1樓:
假設表員工檔案裡有性別、姓名兩個欄位
select count(*) as 員工總數,sum(case when 性別=男 then 1 else 0 end) 男員工數,sum(case when 性別=男 then 1 else 0 end)/nullif(count(*),0) 男所佔比例,sum(case when 性別=女 then 1 else 0 end) 女員工數,sum(case when 性別=女 then 1 else 0 end) /nullif(count(*),0)女所佔比例
from 員工檔案
你自己試試看吧
樓上的寫的不錯,但是最好注意一些除0問題,要是張空表會報除0錯誤的。
2樓:
表infor
姓名 性別 id 工資 ****等等性別列為in*** 含check 約束('男' or '女')那麼查詢為
select count(in***) as 員工總數, sum(decode(in***,'男',1,'女',0)) as 男員工數,sum(decode(in***,'男',1,'女',0))/count(in***) as 男所佔比例,sum(decode(in***,'男',0,'女',1)) as 女員工數,
sum(decode(in***,'男',0,'女',1))/count(in***) as 女所佔比例
from infor;
3樓:匿名使用者
declare @tmp table (xb int,cnt int)
insert into @tmp
select xb,count(*) from 員工檔案group by xb
declare @sum int;
select @sum=sum(cnt) from @tmpselect @sum sums,a.cnt mens,a.bl mensbl,b.
cnt womens,b.bl womensbl
from
(select cnt,cnt*100.0/@sum bl from @tmp where xb='男') a,
(select cnt,cnt*100.0/@sum bl from @tmp where xb='女') b
用sql語句統計每個系的男生人數和女生人數,結果按照人數多寡降序。
4樓:匿名使用者
select 系別,性別,count(*) 人數 from table group by 系別,性別 order by 人數 desc
5樓:靈魂歌者萌小奇
select count(*),dept,*** from student group by dept,*** order by count(*) desc
SQL語句問題,SQL語句問題
樓主在資料結構有問題,帳號相同是可以的,但其實兩者在關係並不是單單是帳號在關係,還有工號之間有關係,所以你的結構有點點問題,既然工號之間也是有關係的,那麼也應該提取出來,所以你的b表應該儲存為 三個欄位 賬號 收銀員 營業員 儲存內容 賬號 收銀員id 營業員id 那麼你想要的結果就很清晰了 sel...
Sql語句的TOP用法,sql查詢語句 top n的用法
select top 1 from table select top 1 2 from table 取前3行資料 區別就是 裡面可以是個表示式 沒有區別個人的習慣 在sqlserver2000中top後只可以跟常數,在2005後可以跟變數了 也許唯一的區別就是top expression 括號中可以...
SQL語句糾錯,這條sql語句哪裡錯了
你要把表結構,錯誤資訊,是什麼資料庫,在什麼地方用,都應該寫出來才能找出來呀。光看你這句話,只能猜到可能有以下原因的錯誤 1 使用了 top 16,如果是 sybase 資料庫是不支援 top 的,應該在末尾使用 set rowcount n 來取記錄條數 n 0表示所有 2 lock false ...