實現(xiàn)代碼:
猇亭網(wǎng)站建設公司創(chuàng)新互聯(lián)公司,猇亭網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為猇亭近千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的猇亭做網(wǎng)站的公司定做!
ELECT(CASE?WHEN?db_psndoc.age=30?THEN?'30歲以上'
WHEN?db_psndoc.age30?THEN?'30歲及以下'?END)
ranges,?COUNT(*) rs ,100*round(COUNT(*)/SUM(COUNT(*))
OVER(),4)||'%'?percent?FROM?bd_psnd
GROUP?BY?CASE
WHEN?bd_psndoc.age=30?then?'30歲及以下'
WHEN?db_psndoc.age=30?THEN?'30歲以上'
END
擴展資料
sum(..) over(..)用法分析:
sum(…) over( ),對所有行求和;
sum(…) over( order by … ), 連續(xù)求和;
sum(…) over( partition by… ),同組內(nèi)所行求和;
sum(…) over( partition by… order by … ),同第1點中的排序求和原理,只是范圍限制在組內(nèi)。
over不能單獨使用,要和分析函數(shù):rank(),dense_rank(),row_number(),sum()等一起使用。
over函數(shù)的參數(shù):over(partition by columnname1 order by columnname2)
含義,按columname1指定的字段進行分組排序,或者說按字段columnname1的值進行分組排序。
例子:
select deptno,ename,sal,
sum(sal) over (partition by deptno order by ename) 部門連續(xù)求和,--各部門的薪水"連續(xù)"求和
sum(sal) over (partition by deptno) 部門總和, -- 部門統(tǒng)計的總和,同一部門總和不變
那你建立一個代碼表b:
code name
數(shù)據(jù)是
1 學生
2 老師
然后a表的x字段關聯(lián)b表的code
采用winform實現(xiàn)需要的功能,首先在數(shù)據(jù)庫中建表,其中一個字段為Blob類型,怎么創(chuàng)建就不說了。思路很簡單,就是文件流讀取電腦上的文件,然后通過insert語句將文件的字節(jié)流數(shù)組存進表中,代碼如下:
//通過Stream讀取文件,并轉換為byte數(shù)組
Stream
stream
=
File.Open(ChoosedFilePaths[i],
FileMode.Open,
FileAccess.Read,
FileShare.Read);
byte[]
buffer
=
new
byte[stream.Length];
stream.Read(buffer,
0,
buffer.Length);
string
constr
=
ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
OracleConnection
conn
=
new
OracleConnection(constr);
OracleParameter
param
=
null;
OracleCommand
cmd
=
new
OracleCommand();
cmd.Connection
=
conn;
cmd.CommandText
=
"insert
into
FJG_FILE_MANAGE(NUMBERS,FILE_NAME,FILECONTENT)
VALUES('"
+
attributes.Number
+
"','"
+
attributes.FileName
+
"',:contents,'")";
param
=
new
OracleParameter("contents",
OracleType.Blob,
buffer.Length);
param.Value
=
buffer;
cmd.Parameters.Add(param);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch(System.Exception
e)
{
log.Append("上傳狀態(tài):t失??!rn"
+
"失敗原因:t"
+
e1.Message
+
"rnrn");
}
finally
{
cmd.Close();
}
本來采用的是OleDb,后來測試發(fā)現(xiàn)不好使,好像是Provider的問題,然后改為OracleClient來進行上傳,OracleClient不需要Provider。
關鍵是sql語句中Blob字段的參數(shù)要寫成“:ParameterName”的形式。
number類型的話,可以直接比較
用法一:
select * form tablename where id5 and id10;
解釋:這樣就可以取出數(shù)字“id”在5到10之間的所有記錄(不包含5和10)。
用法二:
select * from tablename where id between 5 and 10;
解釋:這樣就可以取出數(shù)字“id”在5到10之間的所有記錄(包含5和10)。
用法三:
select t1. * from tablename1 t1 , tablename2 t2 where t1.id=t2.id;
解釋:這樣就可以取出所有的表1和表2中id值相同的表1的所有內(nèi)容(注意,此用法只能條件等于,不能大于或小于(大于小于都是無意義的),)。
代碼如下:
d2 := to_date('20190528','yyyymmdd');
d3 := to_date('20170101','yyyymmdd');
d4 := sysdate;
if d1d3 then --格式不同進行比較
dbms_output.put_line('d1d3');
end if;
if d2d3 then --格式相同比較
dbms_output.put_line('d2d3');
end if;
if d1d4 then --格式不同進行比較
dbms_output.put_line('d1d4');
end if;
dbms_output.put_line('d4是:'||d4);
end;
擴展資料
oracle sql日期比較
oracle sql日期比較:
在今天之前:
select * from up_date where update to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
在今天只后:
select * from up_date where update to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
精確時間:
select * from up_date where update = to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss')