20141222-20141226

1.Oracle case when 语句

转自:http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html

1. CASE WHEN 表达式有两种形式

复制代码
--简单Case函数  

CASE sex  
WHEN '1' THEN ''  
WHEN '2' THEN ''  
ELSE '其他' END  

--Case搜索函数  

CASE
WHEN sex = '1' THEN ''  
WHEN sex = '2' THEN ''  
ELSE '其他' END  
复制代码

 

2. CASE WHEN 在语句中不同位置的用法

2.1 SELECT CASE WHEN 用法
复制代码
SELECT   grade, COUNT (CASE WHEN sex = 1 THEN 1      /*sex 1为男生,2位女生*/
                       ELSE NULL
                       END) 男生数,
                COUNT (CASE WHEN sex = 2 THEN 1
                       ELSE NULL
                       END) 女生数
    FROM students GROUP BY grade;
复制代码

 

2.3 WHERE CASE WHEN 用法
复制代码
SELECT T2.*, T1.*
   FROM T1, T2
  WHERE (CASE WHEN T2.COMPARE_TYPE = 'A' AND
                   T1.SOME_TYPE LIKE 'NOTHING%'
                THEN 1
              WHEN T2.COMPARE_TYPE != 'A' AND
                   T1.SOME_TYPE NOT LIKE 'NOTHING%'
                THEN 1
              ELSE 0
           END) = 1
复制代码

 

2.4 GROUP BY CASE WHEN 用法
复制代码
SELECT  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END salary_class, -- 别名命名
COUNT(*)  
FROM    Table_A  
GROUP BY  
CASE WHEN salary <= 500 THEN '1'  
WHEN salary > 500 AND salary <= 600  THEN '2'  
WHEN salary > 600 AND salary <= 800  THEN '3'  
WHEN salary > 800 AND salary <= 1000 THEN '4'  
ELSE NULL END;  


2.Oracle 排名

转自:http://blog.csdn.net/cczz_11/article/details/6053539

--已知:两种排名方式(分区和不分区):使用和不使用partition

--两种计算方式(连续,不连续),对应函数:dense_rank,rank

 

·查询原始数据:学号,姓名,科目名,成绩

select * from t_score

S_ID

S_NAME

SUB_NAME

SCORE

1

张三   

语文

80.00

2

李四   

数学

80.00

1

张三   

数学

0.00

2

李四   

语文

50.00

3

张三丰 

语文

10.00

3

张三丰 

数学

 

3

张三丰 

体育

120.00

4

杨过   

JAVA

90.00

5

mike   

c++

80.00

3

张三丰 

Oracle

0.00

4

杨过   

Oracle

77.00

2

李四   

Oracle

77.00

 

·查询各学生科目为Oracle排名(简单排名)

select sc.s_id,sc.s_name,sub_name,sc.score,

 rank() over (order by score desc) 名次

from t_score sc

where sub_name='Oracle'

 

S_ID

S_NAME

SUB_NAME

SCORE

名次

4

杨过   

Oracle

77.00

1

2

李四   

Oracle

77.00

1

3

张三丰 

Oracle

0.00

3

 

 

对比:rank()与dense_rank():非连续排名与连续排名(都是简单排名)

 

select sc.s_id,sc.s_name,sub_name,sc.score,

 dense_rank() over (order by score desc) 名次

from t_score sc

where sub_name='Oracle'

S_ID

S_NAME

SUB_NAME

SCORE

名次

4

杨过   

Oracle

77.00

1

2

李四   

Oracle

77.00

1

3

张三丰 

Oracle

0.00

2

 

·查询各学生各科排名(分区排名)

select sc.s_id,sc.s_name,sub_name,sc.score,

 rank() over

 (partition by sub_name order by score desc) 名次

from t_score sc

S_ID

S_NAME

SUB_NAME

SCORE

名次

4

杨过   

JAVA

90.00

1

4

杨过   

Oracle

77.00

1

2

李四   

Oracle

77.00

1

3

张三丰 

Oracle

0.00

3

5

mike   

c++

80.00

1

3

张三丰 

数学

 

1

2

李四   

数学

80.00

2

1

张三   

数学

0.00

3

3

张三丰 

体育

120.00

1

1

张三   

语文

80.00

1

2

李四   

语文

50.00

2

3

张三丰 

语文

10.00

3

 

·查询各科前2名(分区排名)

·类似:新闻表,求栏目点击率在前3位的新闻。

商品表,求各类别销售额在前10位的商品。

select * from (

select sc.s_id,sc.s_name,sub_name,sc.score,

dense_rank() over

(partition by sub_name order by score desc) 名次

from t_score sc

) x

where x.名次<=2

S_ID

S_NAME

SUB_NAME

SCORE

名次

4

杨过   

JAVA

90.00

1

4

杨过   

Oracle

77.00

1

2

李四   

Oracle

77.00

1

3

张三丰 

Oracle

0.00

2

5

mike   

c++

80.00

1

3

张三丰 

数学

 

1

2

李四   

数学

80.00

2

3

张三丰 

体育

120.00

1

1

张三   

语文

80.00

1

2

李四   

语文

50.00

2

 

 

·查询各同学总分

select s_id,s_name,sum(score) sum_score from t_score

group by s_id,s_name

S_ID

S_NAME

SUM_SCORE

1

张三   

80.00

2

李四   

207.00

3

张三丰 

130.00

4

杨过   

167.00

5

mike   

80.00

 

·根据总分查询各同学名次

select x.*,

rank() over (order by sum_score desc) 名次

from (

select s_id,s_name,sum(score) sum_score from t_score

group by s_id,s_name ) x

S_ID

S_NAME

SUM_SCORE

名次

2

李四   

207.00

1

4

杨过   

167.00

2

3

张三丰 

130.00

3

1

张三   

80.00

4

5

mike   

80.00

4

 

 

语法:

rank() over (order by 排序字段 顺序)

rank() over (partition by 分组字段 order by 排序字段 顺序)

 

1.顺序:asc|desc  名次与业务相关:

  示例:找求优秀学员:成绩:降序  迟到次数:升序

2.分区字段:根据什么字段进行分区。

 

问题:分区与分组有什么区别?

·分区只是将原始数据进行名次排列(记录数不变),

·分组是对原始数据进行聚合统计(记录数变少,每组返回一条),注意:聚合。

 

脚本:

create table t_score

(

  autoid   number  primary key,

  s_id     number(3),

  s_name   char(8) not null,

  sub_name varchar2(20),

  score    number(10,2)

);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (8, 1, '张三    ', '语文', 80);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (9, 2, '李四    ', '数学', 80);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (10, 1, '张三    ', '数学', 0);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (11, 2, '李四    ', '语文', 50);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (12, 3, '张三丰  ', '语文', 10);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (13, 3, '张三丰  ', '数学', null);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (14, 3, '张三丰  ', '体育', 120);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (15, 4, '杨过    ', 'java', 90);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (16, 5, 'mike    ', 'c++', 80);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (3, 3, '张三丰  ', 'oracle', 0);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (4, 4, '杨过    ', 'oracle', 77);

insert into t_score (autoid, s_id, s_name, sub_name, score)

values (17, 2, '李四    ', 'oracle', 77);

commit;


3.提交json数据  

//action 里调用

renderJson(map);

//具体实现

//basicJsonCfg是抽象类里一个成员  protected static final JsonConfig basicJsonCfg = new JsonConfig();

//对basicJsonCfg的处理如下

    static {
        basicJsonCfg.registerDefaultValueProcessor(Integer.class,
                nullValueProcessor);
        basicJsonCfg.registerDefaultValueProcessor(Long.class,
                nullValueProcessor);

        basicJsonCfg.registerJsonValueProcessor(Date.class,
                dateJsonValueProcessor);
        basicJsonCfg.registerJsonValueProcessor(Timestamp.class,
                dateJsonValueProcessor);
        
        basicJsonCfg.setIgnoreDefaultExcludes(false);
        basicJsonCfg.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);

    }

    protected void renderJson(Object object) throws IOException {


        renderJson(object, basicJsonCfg, true);
    }



    protected void renderJson(Object object, JsonConfig jsonConfig,
            boolean isSuccess) throws IOException {

        JSONObject jsonObject = JSONObject.fromObject(object, jsonConfig);// 以jsonConfig 规定的设置生成json对象
        //jsonObject.element("success", isSuccess);//在Jason里添加元素
        render("application/json", jsonObject.toString());
    }


    protected void render(String contentType, String content)
            throws IOException {

        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);

        response.setContentType(contentType + "; charset=utf-8");
        response.getWriter().write(content);
        response.getWriter().flush();
    }

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值