`
zhangyou1010
  • 浏览: 303985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle sql 合并 分组 聚合函数

阅读更多
工作中有一需求,要根据多个表的数据统计情况来更新另外一个表中的某个字段,折腾了会才写出如下sql:
 --最终版更新语句
 update moka_user_usage t
    set portfolionumber = (select ta.pnum
                             from (select sum(pnum) pnum, pomuid
                                     from ((select count(om.userid) pnum,
                                                   om.userid pomuid
                                              from MOKA_PORTFOLIO          p,
                                                   MOKA_PORTFOLIO_CATEGORY c,
                                                   om_user                 om
                                             where p.type_id = c.type_id and
                                                   p.verify_flag = '1' and
                                                   p.open_flag = '0' and
                                                   om.userid = p.user_id
                                            -- and t.userid = om_user.userid
                                             group by om.userid) union all
                                            select *
                                              from (select count(mom.username) mctnum,
                                                           mom.userid mctuid
                                                      from mct_works_type_mapping mtp,
                                                           mct_works              mct,
                                                           om_user                mom
                                                     where mtp.works_id =
                                                           mct.works_id and
                                                           mct.cp_id =
                                                           mom.username and
                                                           mct.state = '1'
                                                     group by mom.userid))
                                             group by pomuid
                                   ) ta
                            where ta.pomuid = t.userid)
                            




当然这个和业务相关,我贴出来只想记录下。

在写这个sql时,遇到个小问题,不知该如何解决,问题意思大概如下:

有两个表ta(num1,id1) tb(num2,id2)

ta表数据如下:
NUM1 ID1

1 100
2 101
5 107
4 108
9 210

tb的数据如下:

NUM2 ID2
3 100
8 104
5 301
10 101
20 710
45 107

要将ta和tb中的数据合并,如果ta和tb中id相同的话,则把num1和num2相加,开始没想要分组,

其实很简单,sql如下:

  
select sum(num1), id1
     from (select *
             from TESTA a
           Union All
           select * from TESTB b)
    group by id1


顺便温故了下sql,union all 为合并两个结果集,不会合并重复的行,而union 则会合并重复的行。
分享到:
评论

相关推荐

    oracle SQL查询和SQL函数手册 基本涵盖了常用的

    - **GROUP BY** 用于对数据进行分组,常与聚合函数如COUNT(), SUM(), AVG()一起使用。 - **HAVING** 用于在GROUP BY后的结果集上设置过滤条件,不同于WHERE,它能处理聚合函数的结果。 3. **SQL函数** - **聚合...

    Oracle多行记录合并

    - **`LISTAGG()` 函数:** 这是Oracle 11g及以后版本引入的一个强大的聚合函数,专门用于将多行数据合并为单行字符串。它接受一个排序表达式和一个分隔符,返回所有行的合并结果。例如,假设我们有一个名为`orders`...

    oracle sql内置函数大全

    在Oracle数据库系统中,内置函数分为多种类型,包括数值函数、字符串函数、日期时间函数、转换函数、数学函数、聚合函数等。下面将详细介绍这些函数类别及其常见用法。 1. **数值函数**: - `ABS()`:返回一个数的...

    oracle_sql_函数_语法_集合

    5. **聚合函数**:如`COUNT()`计算记录数,`SUM()`求和,`AVG()`计算平均值,`MAX()`和`MIN()`分别找出最大和最小值。 在SQL语法方面,有以下几个基础概念: 1. **SELECT语句**:用于从表中选取数据,例如`SELECT ...

    oracle行转列聚合函数WMSYS.WM_CONCAT

    ### Oracle行转列聚合函数WMSYS.WM_CONCAT详解 #### 一、概述 在进行数据处理时,经常会遇到需要将多行数据合并为单行的情况,这通常被称为“行转列”。Oracle数据库提供了多种方法来实现这一需求,其中`WMSYS.WM_...

    Pro Oracle SQL Development

    3. **聚合函数与分组**:GROUP BY和HAVING子句用于对数据进行分组并应用聚合函数(如COUNT、SUM、AVG、MAX、MIN),用于统计和分析数据。 4. **窗口函数**:Oracle SQL中的窗口函数(如RANK、ROW_NUMBER、LEAD、LAG...

    OracleSQL必备参考

    4. **聚合函数**:如COUNT、SUM、AVG、MAX和MIN等,用于对一组值进行计算,提供关于数据集的汇总信息。 5. **分组和排序(GROUP BY 和 ORDER BY)**:GROUP BY用于将数据按一个或多个列进行分组,而ORDER BY用于对...

    oracle sql 高级编程

    GROUP BY和HAVING子句用于根据一个或多个列对数据进行分组,并结合聚合函数(如COUNT、SUM、AVG、MAX和MIN)进行统计分析。在高级编程中,理解如何利用这些功能进行复杂的数据分析至关重要。 四、窗口函数 窗口函数...

    Oracle函数及常用sql

    - 使用聚合函数:`GROUP BY`与`SUM()`, `COUNT()`, `AVG()`, `MAX()`, `MIN()`结合。 3. **联接查询(JOIN)**: - 内连接:`INNER JOIN`,匹配两个表中的记录。 - 左连接:`LEFT JOIN`,返回左表所有记录,即使...

    Oracle SQL高级编程 中文版

    3. **聚合函数与分组**:GROUP BY、HAVING子句和聚合函数(如COUNT、SUM、AVG、MIN、MAX)是数据分析的基础。书中将深入讲解如何有效地使用这些工具进行数据汇总和分组分析。 4. **窗口函数**:Oracle SQL的窗口...

    ORACLE SQL官方教程

    - `SELECT`:从表中检索数据,支持各种条件过滤和聚合函数。 - `UPDATE`:修改已有记录。 - `DELETE FROM`:删除指定记录。 - `ALTER TABLE`:修改表结构,如添加、删除或修改列。 2. **数据类型** Oracle SQL...

    《Oracle SQL高级编程》书中源代码

    3. **分组和聚合函数**:GROUP BY和HAVING子句是数据分组和聚合的核心,配合COUNT、SUM、AVG、MAX和MIN等函数,可以实现对数据集的统计分析。 4. **窗口函数**:Oracle SQL的窗口函数如ROW_NUMBER、RANK、DENSE_...

    oracle SQL疑难解析 书中SQL

    5. **聚合函数**:COUNT、SUM、AVG、MAX和MIN是常用的聚合函数,用于计算一组值的总数、总和、平均值、最大值和最小值。 6. **视图**:视图是虚拟表,由SELECT语句定义,可以简化复杂的查询,提供安全性,或者将...

    《ORACLE SQL 高级编程》随书脚本

    4. **分组与聚合函数**:GROUP BY和HAVING子句用于数据分组,COUNT、SUM、AVG、MAX和MIN等聚合函数用于统计计算。可能还会介绍窗口函数(RANK、DENSE_RANK、ROW_NUMBER等)以及分析函数(OVER子句)。 5. **视图...

    Oracle内置SQL函数-分类整理大全

    在数据分析中,聚合函数如COUNT、SUM、AVG、MAX和MIN经常被用到。COUNT计数,SUM求和,AVG计算平均值,MAX和MIN找到最大值和最小值。GROUP BY和HAVING语句常与这些函数一起使用,用于分组数据并应用条件过滤。 五、...

    Oracle SQL Reference命令参考文档

    你可以通过指定列、表、连接、聚合函数(如COUNT、SUM、AVG、MAX、MIN)和分组(GROUP BY)来获取所需的数据。HAVING子句用于过滤聚合后的结果。 3. **DML操作**:INSERT、UPDATE和DELETE语句分别用于插入新记录、...

    实用Oracle SQL&PLSQL PPT

    聚合函数,如COUNT、SUM、AVG、MAX和MIN,用于对一组值进行计算。还有GROUP BY和HAVING子句,用于分组数据并应用条件过滤。 PL/SQL则提供了一种在数据库内部编写程序的方式。它可以定义变量、控制流程(IF-THEN-...

    mastering oracle sql

    在Oracle SQL中,你可以进行数据的插入、更新、删除,以及复杂的查询和聚合操作。例如,你可以使用`SELECT`语句来检索数据,`INSERT`来添加新记录,`UPDATE`来修改现有记录,以及`DELETE`来删除不再需要的记录。 ...

    oracle SQL语法大全.rar

    3. 聚合函数:COUNT、SUM、AVG、MAX、MIN等,可对一组值进行计算。 4. 分组和排序:GROUP BY用于按列分组,ORDER BY用于结果集排序。 5. 连接查询:JOIN操作将多个表的数据合并在一起,如INNER JOIN、LEFT JOIN、...

    ORACLE SQL 官方教程 PPT

    这只是Oracle SQL官方教程PPT中的部分内容,完整的教程还会涉及更复杂的查询,如WHERE子句(过滤数据),GROUP BY和HAVING(数据分组),JOIN操作(合并多个表的数据),子查询(嵌套查询),以及更高级的函数和操作...

Global site tag (gtag.js) - Google Analytics