sql語句小練習

1計算100天后病毒發作的日期。

print convert(varchar(50), dateadd(day,100,getdate()),111)

2凡是入職一年以上的員工,工資增加500

update employee set fsalary=fsalary+500 where datediff(yy,empintime,GETDATE())=1

3計算1975105日到現在現在相差多少年///小時?

print  datediff(yy,'1975-10-5',getdate())

print datediff(mm,'1975-10-5',getdate())

print datediff(dd,'1975-10-5',getdate())

print datediff(hh,'1975-10-5',getdate())

4統計2008年入職的員工

select COUNT(*) from T_Employee where DATEPART(yy, 入職日期)='2008'

5輸出所有數據中通話時間最長的5條記錄。

select top 5 * from t_callers order by DATEDIFF(ss,startdatetime,enddatetime) desc

6將結果集加入一列“通話時長(秒)”

select top 5 *,DATEDIFF(SS,startdatetime,enddatetime) as 通話時長 from t_callers order by DATEDIFF(SS,startdatetime,enddatetime) desc

三、Case函數用法

1.1

use School

 SELECT * FROM Score

 SELECT * FROM Student

--90分以上優秀

--80分以上良好

--70分以上中等

--60分以上及格

--60分以下不及格

 

select FName,FEnglish,

(case

when FEnglish>=90

then '優秀'

when FEnglish>=80

then '良好'

when FEnglish>=70

then '中等'

when FEnglish>=60

then '及格'

else '不及格'

end

)

from MyStudents

2、要求,查詢結果集中有A B C三列,SQL語句實現:當A列大於B列時,在C中顯示A列的值否則顯示B列中的值。

 

select a,b,

 (

 case

 when a>b then a

 else b

 end

 ) as 'c'

  from abc

3、  在訂單表中,統計每個銷售員的總銷售金額,列出銷售員名、總銷售金額、稱號(>6000金牌,>5500銀牌,>4500銅牌,否則普通)

 

  select 銷售員,總銷售金額=SUM(銷售數量*銷售價格),

  (

  case

  when SUM(銷售數量*銷售價格)>6000

  then '金牌'

  when SUM(銷售數量*銷售價格)>5500

  then '銀牌'

  when SUM(銷售數量*銷售價格)>4500

  then '銅牌'

  else '普通'

  end

  )

   from MyOrders group by 銷售員

4

單號   金額          

Rk1     10

Rk2     20

Rk3     -30

Rk4     -10

將上面的表輸出爲如下的格式:

單號   收入   支出

Rk1     10       0

Rk2     20       0

Rk3      0        30

Rk4      0        10

 

select number,

     (

     case

     when ammont>0 then ammont

     else 0

     end

     )as 收入,

     (

     case

     when ammont>0 then 0

     else ABS(ammont)

     end

     )as 支出

     

      from _abs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章