❶ sql語句怎樣查詢一個范圍
SQL方法完成數值區間查詢
要求:根據獎金等級表的數值區間,返回獎金對應的等級。
1、鏈接外部數據:數據--現有鏈接--瀏覽更多,在路徑中選擇數據Excel文件和目標工作表,建立數據鏈接。
詳細步驟參考前面所發的SQL相關文章。
2、編寫sql語句。
2.1、使用switch函數,SQL語句為:
select 姓名,獎金,switch(獎金<200,"D級",獎金<300,"C級",獎金<500,"B級",獎金>=500,"A級") as 獎金等級 from [獎金$a1:b11]
switch函數直接判斷數值,若數值小於200,返回D級;數值小於300返回C級;數值小於500,返回B級;餘下的數值條件要變化為>=500返回A級而不是<=700。
2.2、使用iif函數,SQL語句為:
select 姓名,獎金,iif(獎金<200,"D級",iif(獎金<300,"C級",iif(獎金<500,"B級","A級"))) as 獎金等級 from [獎金$a1:b11]
其基本思路和switch函數相同,類似工作表函數if的嵌套。
2.3、使用betweent...and,SQ語句為:
select a.姓名,a.獎金,b.等級 from [獎金$a1:b11] a,[獎金等級$] b where a.獎金 between b.最小值 and b.最大值
以戴蘇明同學為例子,在SQL代碼運行的時候,將戴蘇明同學的獎金一一和獎金等級表中的數值進行對比,符合區間的就返回區間等級。其他同學亦然。
但是,當獎金超出最大值700的時候就會取不到該條數據。
如劉平的獎金701並不在betweent...and的區間內,返回的結果中沒有劉平的數據。
2.4、使用Where比較大小,sql語句為:
select a.姓名,a.獎金,b.等級 from [獎金$a1:b11] a,[獎金等級$] b where a.獎金 >=b.最小值 and a.獎金<=b.最大值
此方法原理和betweent...and一樣,當獎金超過最大值700時,數據將有遺漏(劉平)。
當獎金的最大值為700的時候,以上四種方法都得出同樣的結果。
當獎金最大值超過700的時候,3、4兩個方法將遺漏獎金大於700的數據。
因此,可在設計獎金等級表的時候,可以將最大值700改為一個比較大的數值,使獎金再高也不會超過,則四種方位皆可。
如更改獎金等級表的最大值700為70000,這么大的一個范圍,則四種方法都適用。
❷ SQL,表中欄位的某個范圍內插入相同數據
insert into 表(列名一,列明二)
select 01,20130910 union
select 02,20130911 union
select 03,20130912 union
select 04,20130913 union
select 05,20130914 union
select 06,20130915
這樣可以添加多條數據 ,union在最後一條數據里不用加上。
❸ SQL對取值范圍進行分組匯總的幾種辦法
可以用到自定義函數,
create or replace FUNCTION g2(v NUMBER) RETURN INT IS
TYPE it IS TABLE OF INT;
BEGIN
IF v>0 AND v<= 500 THEN
RETURN 1;
ELSIF v>500 AND v<= 1000 THEN
RETURN 2;
ELSIF v>1000 AND v<= 5000 THEN
RETURN 3;
ELSIF v>5000 AND v<= 20000 THEN
RETURN 4;
ELSE
RETURN 0;
END IF;
END g2;
/
select g2(id) f, count(1) cnt from t1 group by g2(id) order by 1;
F CNT
---------- ----------
1 500
2 500
3 4000
4 15000
當然,我們也可以不藉助函數,而用case when語句實現同樣的條件分組,但是語句比較冗長,列名是固定的。不利於閱讀與修改,也不利於代碼重用。
select (case
when id >0 AND id<= 500 THEN 1
when id >500 AND id<= 1000 THEN 2
when id >1000 AND id<= 5000 THEN 3
when id >5000 AND id<= 20000 THEN 4
else 0
end) f,
count(1) cnt from t1 group by
(case
when id >0 AND id<= 500 THEN 1
when id >500 AND id<= 1000 THEN 2
when id >1000 AND id<= 5000 THEN 3
when id >5000 AND id<= 20000 THEN 4
else 0
end)
order by 1;
F CNT
---------- ----------
1 500
2 500
3 4000
4 15000
❹ sql 查詢表中某一范圍有重復值的數據
select a.* from table a where
exists ( select b.學校,b.科目,count(*) from table b where b.學校=a.學校 and b.科目=a.科目 group by b.學校,b.科目 having count(*) > 1)
看看這個是不是你想要的
❺ mysql最大最小范圍不能重疊sql怎麼寫
資料庫最小長度minLen、最大長度maxLen。
前端輸入長度,100到200,這是查到的信息,以上僅供參考,希望可以幫助到你。
SQL是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。同時也是資料庫腳本文件的擴展名。
❻ SQL語句中如何完成某一個欄位,某一個范圍的替換
可以
如果你的"日期"這個欄位是日期類型的, 用函數取一下年月作為where條件的一部分進行update就可以了
如果是字元串類型, 可以用字元串函數(left, right, substring等) 取出年月, 作為where條件進行update
❼ sql查詢:怎麼查詢符合2個范圍
sql="Select cpkd,cphd,title from news where (cpkd between '" & kdi & "' and '" & kda &"') AND (cphd between '" & hdi &"' and '" & hda & "') order by id desc "
注意sql是一個字元串變數(等號右邊要成為一個字元串),要用長字元串=短字元串(用""圍住)& 變數 & 短字元串(用""圍住)。&是連接符,將字元串和變數連接成新的字元串。
❽ 求一個SQL語句把union疊加起來的重復結果去除!
看不到你寫的代碼,只好猜測一下:
sql="select * from (select 1 as b, data.* from data WHERE name Like '哈哈' union select 2 as b, data.* from data where name Like '%"& 變數 &"%' or tag Like '哈哈') order by b asc"
改成
sql="
select * from
(select 1 as b, data.*
from data
WHERE
name Like '哈哈'
and name not Like '%"& 變數 &"%'
and tag not Like '哈哈'
union
select 2 as b, data.*
from data
where
name not like'哈哈'
and (name Like '%"& 變數 &"%' or tag Like '哈哈'))
order by b asc"
想法就是:兩個select語句自己選滿足自己條件的記錄,同時,去除另一個select語句選出的記錄
❾ SQL如何實現按數據范圍查詢
SQL裡面 像這種字元串存儲的數字 可以直接比較大小
select * from table where CPLSH>='000100' and CPLSH<='000300'
多個范圍的話就用or,比如
select * from table where (CPLSH>='000100' and CPLSH<='000300') or (CPLSH>='000305' and CPLSH<='000400')
有幾個范圍加幾個范圍
❿ SQL在兩個屬性值相同的范圍內計算另一個屬性SUM
首先,欄位類型要對應上,表1里的Food和表2里的Food,表1里的FoodQuantity和表2里的FoodQuantity,表1里的PurchaseDate和表2里的PurchaseDate
insert into total (Food,FoodQuantity,PurchaseDate) select Food,sum(FoodQuantity),PurchaseDate from Indivial
group by Food,PurchaseDate