实现代码:
猇亭网站建设公司创新互联公司,猇亭网站设计制作,有大型网站制作公司丰富经验。已为猇亭近千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的猇亭做网站的公司定做!
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 … ), 连续求和;
sum(…) over( partition by… ),同组内所行求和;
sum(…) over( partition by… order by … ),同第1点中的排序求和原理,只是范围限制在组内。
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number(),sum()等一起使用。
over函数的参数:over(partition by columnname1 order by columnname2)
含义,按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。
例子:
select deptno,ename,sal,
sum(sal) over (partition by deptno order by ename) 部门连续求和,--各部门的薪水"连续"求和
sum(sal) over (partition by deptno) 部门总和, -- 部门统计的总和,同一部门总和不变
那你建立一个代码表b:
code name
数据是
1 学生
2 老师
然后a表的x字段关联b表的code
采用winform实现需要的功能,首先在数据库中建表,其中一个字段为Blob类型,怎么创建就不说了。思路很简单,就是文件流读取电脑上的文件,然后通过insert语句将文件的字节流数组存进表中,代码如下:
//通过Stream读取文件,并转换为byte数组
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失败!rn"
+
"失败原因:t"
+
e1.Message
+
"rnrn");
}
finally
{
cmd.Close();
}
本来采用的是OleDb,后来测试发现不好使,好像是Provider的问题,然后改为OracleClient来进行上传,OracleClient不需要Provider。
关键是sql语句中Blob字段的参数要写成“:ParameterName”的形式。
number类型的话,可以直接比较
用法一:
select * form tablename where id5 and id10;
解释:这样就可以取出数字“id”在5到10之间的所有记录(不包含5和10)。
用法二:
select * from tablename where id between 5 and 10;
解释:这样就可以取出数字“id”在5到10之间的所有记录(包含5和10)。
用法三:
select t1. * from tablename1 t1 , tablename2 t2 where t1.id=t2.id;
解释:这样就可以取出所有的表1和表2中id值相同的表1的所有内容(注意,此用法只能条件等于,不能大于或小于(大于小于都是无意义的),)。
代码如下:
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')