當前位置:首頁 » 編程語言 » sqlserver整數相除
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver整數相除

發布時間: 2022-09-10 06:01:17

1. sqlServer中SQL語句如何對兩個group By後的查詢結果進行相除

你錯誤的問題點在於兩個子查詢之間沒有任何關聯,不能直接除。首先我們要建立關聯關系。再除
select a.值1,(case when isnull(b.值2,0)=0 then 0 else a.值1/b.值2) ---記得除數為0處理
from (select 值2,SUM(值1) AS 值1 from 表1 group by 值2) a
innor join (看情況使用innor join 還是 full 還是Left)
(select 值2,sum(值1) AS 值1 from 表2 group by 值2) b on A.值2=b.值2

2. sqlserver里取兩個整數相除的百分比,小數點後保留2位用什麼函數

1.round() 函數是四捨五入用,第一個參數是我們要被操作的數據,第二個參數是設置我們四捨五入之後小數點後顯示幾位。

2.numeric 函數的2個參數,第一個表示數據長度,第二個參數表示小數點後位數。

例如:

select cast(round(12.5,2) as numeric(5,2)) 結果:12.50

select cast(round(12.555,2) as numeric(5,2)) 結果:12.56

select cast(round(122.5255,2) as numeric(5,2)) 結果:122.53

select cast(round(1222.5255,2) as numeric(5,2)) 結果:報錯了! 原因是:1222.5255,整數位是4,小數位是2,加起來4+2=6,超出了numeric設置的5位,所以為了保險,可以增減numeric的參數,例如numeric(20,2)。

3. sql server 簡單的除法運算

用一個SQL求出來就可以了
select sum(case s when b the 1 else 0 end)/sum(case s when b then 0 else 1 end ) as result from t
但要判斷一下除數是否為0的情況,就要寫成這樣:
select case when sum(case s when b then 0 else 1 end )=0 then 0 else sum(case s when b the 1 else 0 end)/sum(case s when b then 0 else 1 end ) end as result from t
如果除數是0,結果返回0

4. SQL除數為0怎麼解決

這樣一個情況
select * from a where c>0 and (b/c)>0.5 and (b/c)<0.6
這樣一條語句,由於b,c是二個數值列,裡面記錄的是金額,而c 的話有可能為0,那麼這時我們雖然加上了c>0這個條件,卻仍有可能 出現 遇到以零作除數錯誤 這個錯誤.
解決這個問題,有二種方法,一種是自己加個函數 發覺c=0時,將c改成1 ;如 b/checkdata(c)<0.6
另一種方式 則是使用sqlserver 的選項來禁止出現以零除的錯誤中斷,讓而讓其為null
set ansi_warnings off
SET ARITHABORT off
SET ARITHIGNORE on
select * from a where c>0 and (b/c)>0.5 and (b/c)<0.6
如果一來,當執行時,遇到某條記錄里為0時,則二數相除為null,而null<0.6這個是不成立的,從而達到了作為條件的目的.

5. sql相除的問題

SELECT field1/field2 FROM TB;
當 field1的數值 > field2的數值時,除法得出的結果是<1的,即0.xxxxxx
這個時候在DB2的環境下SELECT出來的值是0
解決方法:
先把field1轉換成DOUBLE類型的,這樣計算出來的就會得出小數點了,會顯示出0.xxxx
SELECT CAST(field1 AS FLOAT)/field2 FROM TB;
ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOAT就沒問題了。
小數點顯示4位小數。可以進一步四捨五入,保留兩位小數點
SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) FROM TB;
如果數據列的值為NULL,將其設置為0,那麼sql就要這么寫
SELECT ROUND(COALESCE(CAST(field1 AS DOUBLE), 0)/field2, 2) FROM TB;
COALESCE這個函數系統的用法如下:
a. 輸入參數為字元類型,且允許為空的,可以使用COALESCE(inputParameter,」)把NULL轉換成」;
b. 輸入類型為整型,且允許為空的,可以使用COALESCE(inputParameter,0),把空轉換成0;
c. 輸入參數為字元類型,且是非空非空格的,可以使用COALESCE(inputParameter,」)把NULL轉換成」,然後判斷函數返回值是否為」;
d. 輸入類型為整型,且是非空的,不需要使用COALESCE函數,直接使用IS NULL進行非空判斷。

6. sql server 2008 整數相除四捨五入

sql server 2008 整數相除需要除數或被除數有一個數據類型為小數,才可以四捨五入。


首先看一個例子,如圖:


兩條語句唯一區別就是 10 與 10.00

1、select cast(round(10/6,0) as int) 結果:1

2、select cast(round(10.00/6,0) as int) 結果:2

但結果確不一樣。


原因是SQLserver有默認的數據類型轉換。

10/6 默認轉換為整型 即:10/6 = 1。那麼 round(1) = 1

10.00/6 默認轉換為小數即:10.00/6 = 1.666666 ,那麼 round(1.666666,0) = 2

7. SQL 兩整數相除,取小數點後兩位

用函數ROUND(欄位,精度)SqlServer Oracle通用

8. sqlserver怎麼進行整數的移位運算

SQL SERVER

查看所有表名:
select name from sysobjects where type='U'

查詢表的所有欄位名:
Select name from syscolumns Where ID=OBJECT_ID('表名')

select * from information_schema.tables
select * from information_schema.views
select * from information_schema.columns

ACCESS

查看所有表名:
select name from MSysObjects where type=1 and flags=0

MSysObjects是系統對象,默認情況是隱藏的。通過工具、選項、視圖、顯示、系統對象可以使之顯示出來。

Oracle
select cname from col where tname='ZW_YINGYEZ'
select column_name from user_tab_columns where table_name='ZW_YINGYEZ'
查詢表欄位數
select count(column_name) from user_tab_columns where table_name='表名'

9. sql server 簡單的除法運算規程

select (select count(*) as y from t where s='b')
(select count(*) as n from t where s!='b')

在SqlServer默認當做int類型,兩個int變數相除得到的還是個int類型 ,所以只要把其中一個改成小數類型的就可以得到你要的結果了。