1. sql語句中是否用過Sum,Count,Top,Group By,Having,Case...When這些關鍵字,請描述具體用法
用過,其中Sum和Count是聚合函數,Sum的作用是計算一組數的和,Count是計算總共的行數,Count(*)返回行數,包括含有空值的行,不能和Distinct一起使用
Top n[PERCENT]僅返回N行
例如:select top 6 * from student
的意思就是返回學生表的前6行信息
使用Group by分組匯總查詢結果
其他的我也不是很熟,不好意思
2. sql case when 與 count 連用問題求解決
CASE WHEN price <= 1000 THEN 1 ELSE 0 END
三個case語句效果相同,其實就是類似於增加一個欄位,這個欄位,滿足條件的為1,不滿足的是0,這樣sum的效果,就是將所有的1加起來,也就是所有滿足條件的記錄個數。
而count,會不管是1還是0,都會統計,這樣怎麼算都是總條目數8個。
語句這東西,靈活使用的情況太多,慢慢來吧,做到遇到一個理解一個,很快也就熟練了。
3. sql中count的用法
用sum更好點,如
(一)
select a.單位名稱,sum(case when b.時間>='2007-04-01' and b.時間<'2007-07-01' then 1 else 0 end) as [2007二季度],sum(case when b.時間>='2007-10-01' and b.時間<'2008-01-01' then 1 else 0 end) as [2007四季度] from 表一 a left join 表二 b on a.單位名稱=b.單位名稱 group by a.單位名稱
(二)
select a.單位名稱,sum(case when b.時間>='2007-04-01' and b.時間<'2007-07-01' and b.類別='e' then 1 else 0 end) as [2007二季度],sum(case when b.時間>='2007-10-01' and b.時間<'2008-01-01' and b.類別='e' then 1 else 0 end) as [2007四季度] from 表一 a left join 表二 b on a.單位名稱=b.單位名稱 group by a.單位名稱
4. ASP中SQL的count,sum函數出錯,請大蝦幫忙看看
objrs1="select count(職別),sum(case when 職別='科級' then ok else 0 end) as 科級,sum(case when 職別='隊級' then ok else 0 end) as 隊級,sum(case when 職別='一般管理人員' then ok else 0 end) as 一般管理人員,sum(case when 職別='上級檢查' then ok else 0 end) as 上級檢查,sum(case when 職別='工人' then ok else 0 end) as 工人 from (select 職別,count(*) as ok from xjkq where 時長 is null group by 職別) as 職別 group by 職別"
修改為:
objrs1="select 職別,sum(case when 職別='科級' then 1 else 0 end) as 科級,sum(case when 職別='隊級' then 1 else 0 end) as 隊級,sum(case when 職別='一般管理人員' then 1 else 0 end) as 一般管理人員,sum(case when 職別='上級檢查' then 1 else 0 end) as 上級檢查,sum(case when 職別='工人' then 1 else 0 end) as 工人 from xjkq where 時長 is null group by 職別"
5. SQL里同一個表不同條件進行count(), 是同一個select里使用case when效率高還是分成幾個select效率高
效率都差不多 不過使用case when 應該會快點
多個select需要union 連接
6. 關於使用sql語句sum(case when……)來實現分類匯總功能
有兩處有筆誤,如果結果不同的話,需要檢查一下,先對比下總金額,再對比各個的銷售額,再檢查姓名是否完全一致,EXCEL中經常有前後空格或是不容易顯示出來的字元會有影響,用select 月份,姓名,sum(銷售數量*產品單價) from 表格 group by 月份,姓名
例如:
select
月份,
sum(casewhen銷售人員='姓名1'then銷售數量*產品單價else0end)as姓名1銷售額,
sum(casewhen銷售人員='姓名2'then銷售數量*產品單價else0end)as姓名1銷售額,
sum(casewhen銷售人員='姓名3'then銷售數量*產品單價else0end)as姓名1銷售額
from表格
groupby月份,銷售人員
(6)sqlcountcase擴展閱讀:
注意事項
case when有用兩種用法如下:
用法一:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
用法二:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
7. sql語句求解COUNT (CASE WHEN THEN***)排除重復項
可以用count函數,但是else時用null值,不能用0,即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO ELSE null END)
這個else還可以不寫,因為默認情況下不寫就是空值。即:
COUNT(CASE WHEN A.CLOSE_ID='T' THEN A.MO_NO END)
8. sql count後怎麼用case when
語句:
select case when d < 5 then '<5'
when ...
else '' end
from
(
select count(a) AS d from 表A
WHERE day_date>=20150601 and day_date<=20150630
group by a
) a1
case when 後面的語句補全就可以了
9. oracle sql中count、case函數運用
selecta.lastname,ISNULL(COUNT(1),0)
fromhrmresourcea,workflow_currentoperatorbwherea.id=b.useridgroupbya.lastnameorderby2desc
改成這個