`
ypluck
  • 浏览: 77671 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle的left join和group by使用起来秒不可言

阅读更多


如上图的一张表,我要统计operateid分别为OPER000001,OPER000002,OPER000003有多少记录且按照OPER000001,OPER000002,OPER000003的统计结果进行desc排序。代码如下:
select a.id_item as id_item,a.operatenum as operateid,nvl(b.operatenum1,0) as operatenum1,nvl(c.operatenum2,0) as operatenum2 from(select id_item,count(operateid) as operatenum from stm_expapprove where operateid='OPER000001'  group by(id_item)  order by operatenum desc)a 
left join (select id_item,count(operateid) as operatenum1 from stm_expapprove where operateid='OPER000002'  group by(id_item)  order by operatenum1 desc)b on a.id_item=b.id_item left join 
(select id_item,count(operateid) as operatenum2 from stm_expapprove where operateid='OPER000003'  group by(id_item)  order by operatenum2 desc)c on b.id_item=c.id_item order by operateid desc,operatenum1 desc,operatenum2 desc


其实也没什么,无非就是用到一点----查询本表的时候把其查询结果取个别名就OK,这个代码肯定可以优化,但现在做出来就好,我人比较笨,不过还是瞒高兴的。和大家一起分享^_^

执行的结果是:
3
0
分享到:
评论
1 楼 daoyongyu 2008-10-30  
看不到图片,楼主!

相关推荐

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    深入Oracle的left join中on和where的区别详解

    在Oracle数据库中,LEFT JOIN是一种联接操作,用于合并两个或更多表的记录,返回所有左表(第一个提及的表)的记录,即使在右表中没有匹配的记录。LEFT JOIN的关键在于它会保留左表的所有行,并尝试与右表匹配。当...

    oracle-join用法

    在Oracle SQL中,Join主要分为几个类型,包括INNER JOIN、LEFT JOIN (LEFT OUTER JOIN)、RIGHT JOIN (RIGHT OUTER JOIN)以及FULL JOIN (FULL OUTER JOIN)。这些类型在Java编程中同样可以使用,通过SQL查询语句来实现...

    left join 过滤条件写在on后面和写在where 后面的区别

    ### left join 过滤条件写在on后面和写在where 后面的区别 在SQL查询语句中,连接(JOIN)是一种非常重要的操作,用于从两个或多个表中获取数据。其中,`LEFT JOIN`是一种常用的连接类型,它返回左表的所有记录以及...

    oracle中left join和right join的区别浅谈

    LEFT JOIN(也称为LEFT OUTER JOIN)和RIGHT JOIN(也称为RIGHT OUTER JOIN)是两种特殊的JOIN类型,它们在处理不匹配的数据时有不同的行为。 LEFT JOIN的核心特点是保留左表(也就是在JOIN语句中先出现的表)的...

    oracle性能优化技巧

    ### Oracle性能优化技巧详解 ...综上所述,Oracle性能优化涉及多个方面,包括但不限于优化器的选择、表访问方式、SQL语句的编写和执行等。通过对这些方面的深入了解和合理运用,可以显著提升Oracle数据库的查询性能。

    oracle_11gR2_08 分组查询GROUP BY,模糊查询LIKE

    在Oracle 11g Release 2数据库管理系统中,掌握分组查询GROUP BY、模糊查询LIKE、连接查询JOIN以及IN()和NOT IN()等查询技术是至关重要的,它们为数据分析师和开发人员提供了强大的数据筛选与汇总能力。以下是对这些...

    group by的详解

    Oracle数据库对使用`GROUP BY`和`HAVING`有一些特定的限制和注意事项: 1. **分组规则**:在选择列表中出现的任何非聚合列或表达式都必须包含在`GROUP BY`子句中。例如,`p.name`列在选择列表中,因此它也在`GROUP ...

    left-right-join.zip_join_oracle

    本主题主要聚焦于Oracle中的两种特殊连接方式:左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。通过深入理解这两种连接类型,我们可以更好地进行数据融合,获取更全面的信息。 首先,让我们从基本概念出发。在SQL...

    Oracle中分组查询group by用法规则详解

    在Oracle数据库中,`GROUP BY`子句是一个关键的SQL元素,它允许用户根据一个或多个列的值将数据分组,以便对每个组进行聚合计算。以下是对`GROUP BY`用法的详细解释和规则: 1. **基本用法**: `GROUP BY`子句通常...

    《Pro Oracle SQL》Chapter7--7.10GROUP BY Restrictions

    在7.10 GROUP BY Restrictions这一部分,作者深入探讨了在使用GROUP BY子句时的一些限制和注意事项,这对于理解和编写高效、正确的SQL查询至关重要。 1. GROUP BY基础:GROUP BY子句用于将数据集按照一个或多个列...

    Oracle基础之group by和聚合函数

    当我们刚开始学Oracle时,见到group by,常常会来个三连问:为什么要用group by?group by应该怎么用?为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了...

    oracle 连接 join at

    Oracle提供了一系列的开发工具,如SQL Developer,它支持图形化界面来设计和执行JOIN查询,这对于初学者和专业人士都非常方便。 标签中的“源码”暗示可能涉及到数据库操作的编程实现。在Java、Python等编程语言中...

    oracle中使用group by优化distinct

    4. **使用`DISTINCT ON`(Oracle不支持,但其他数据库如PostgreSQL支持)**:虽然Oracle不直接支持`DISTINCT ON`,但可以尝试通过子查询或窗口函数模拟此功能。例如,你可以先用`ROW_NUMBER()`分配唯一的行号,然后...

    oracle group by语句实例测试

    Oracle中的`GROUP BY`语句是SQL查询中的关键部分,用于根据一个或多个列对数据进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`等。在本例中,我们看到的`GROUP BY`语句是用来对`test`表中的数据进行...

    Oracle CBO 学习笔记之(1) : 深入理解Oracle Hash Join的代价模型及其执行流程

    在实际应用中,理解Oracle的Hash Join代价模型和执行流程可以帮助我们优化查询性能,例如,通过调整表的分区策略、增加内存资源或利用并行执行来改善Hash Join的效率。同时,理解何时Hash Join比其他类型的JOIN(如...

Global site tag (gtag.js) - Google Analytics