精华内容
下载资源
问答
  • //如果sts列的值是1,那么sum函数就是用列a_col。如果值是2,那么就对列b_co求和。否则就选择对c_col列进行求值 Select sum(case sts when 1 then a_col when 2 then b_col  else c_col end) from table_A

    //如果sts列的值是1,那么sum函数就是用列a_col。如果值是2,那么就对列b_co求和。否则就选择对c_col列进行求值

    Select   sum(case sts when 1 then a_col  

       when  2 then b_col 

       else  c_col end)  

    from  table_A


    //如果想在sum函数中处理的是非相同的值。

    Select   sum(distinct case sts when 1 then a_col  

    when  2 then b_col 

    else  c_col end)  

    from  table_A


    展开全文
  • 联合查询SUM使用

    2016-10-19 10:17:31
    联合查询SUM使用

    sql的联合查询下SUM的使用
    统计house(主表),room(子表)主子表数据
    统计需求:房屋总数,可创建的房间总数,已创建的房间总数

    这是主表数据
    主表数据
    字段:主键id,可以创建的房间数量.

    这是子表数据
    子表数据
    字段:主键id,父表的pid

    1.首先执行下面sql

    SELECT
        room.id AS roomId,
        room.pid,
        house.id AS houseId,
        house.createableRoom
    FROM
        room
    LEFT JOIN house ON room.pid = house.id

    发现主表配合子表显示,主表数据重复如果直接SUM会有重复数据
    联合查询后的结果

    所以要统计每一个house下有多少room需要这样:

    SELECT
        house.id,
        sum(DISTINCT house.createableRoom) AS rooms
    FROM
        room
    LEFT JOIN house ON room.pid = house.id
    GROUP BY
    house.id

    以主表为依托(GROUP BY 主表的id),统计出每条house下的room数量

    统计结果

    DISTINCT字段是因为联合查询子表会使主表数据重复,这样sum不会重复

    2.但是我们需要的主表的数据条数,以及子表的数据条数还没有,此时需要将第一步执行的sql当作一个表再执行一个sql

    SELECT
        count(tableNew.id) AS '房屋数量',
        sum(tableNew.rooms) AS '房间数量'
    FROM
        (
            SELECT
                house.id,
                sum(DISTINCT house.createableRoom) AS rooms
            FROM
                room
            LEFT JOIN house ON room.pid = house.id
            GROUP BY
                house.id
        ) tableNew

    最后统计结果
    这样两个select能够处理联合查询的sum问题了

    展开全文
  • DB2中使用sum替代count的查询

    千次阅读 2012-12-03 22:17:28
    sum函数是对列的值进行统计,求和; count函数对满足条件的列进行累计,满足条件就加一。 常用count函数来统计满足...常用sum函数来对满足条件的数据进行求和,如,计算学生成绩表score'Scott'的总成绩: sele

    sum函数是对列的值进行统计,求和;

    count函数对满足条件的列进行累计,满足条件就加一。

    常用count函数来统计满足某条件的记录数,如,统计学生信息表student中的男生人数:

    select count(*) from student where sex='M'

    常用sum函数来对满足条件的数据进行求和,如,计算学生成绩表score中'Scott'的总成绩:

    select sum(achv) from score where stu_name='Scott' and stu_id='120010'

    其实除了统计所有表中的行外,其他情况下的count都能用sum来替代。

    例如上面统计学生中男生人数,可以这样写:

    select sum(case when sex='M' then 1 else 0 end)
      from student

    例2:统计employee中所有员工数量,和男性员工数量

    select 'all',count(*) 
      from employee 
     union all 
    select 'man',count(*) 
      from employee 
     where sex='M'
    1   2
    --- -----------
    man          23
    all          42

    下面是使用sum函数来替代count男性员工:

    select 'man',sum(case when sex='M' then 1 else 0 end) 
      from employee
     union all 
    select 'all',count(*) 
      from employee
    1   2
    --- -----------
    all          42
    man          23
    如果要统计所有男性人数和所有女性人数,还有所有员工人数呢?

    如果使用count函数,则需要写三个查询,然后将其union all起来,得到我们的数据:

    select 'man',count(*) 
      from employee 
     where sex='M' 
     union all 
    select 'femail',count(*) 
      from employee 
     where sex ='F' 
     union all 
    select 'all',count(*) 
      from employee 
    1      2
    ------ -----------
    man             23
    femail          19
    all             42

    这个查询的实现,需要读取三次表,效率自然而然低,那我们为何不在一次读取表的时候,都统计到呢?

    读一次表统计所有数据,那么count(*),count(column_name),count(0),count(null)等这些统计的结果相同吗?

    count(*)常用于统计符合条件的行数;

    count(0)或者count(1)在统计符合记录的行数目,与count(*)相同作用;

    count(column_name)就不一样了,它将会过滤掉column is null的值。

    select count(case when 1=0 then 1 else null end)cnt1,
           count(case when 1=1 then 1 else null end) cnt2
     from sysibm.sysdummy1
    CNT1        CNT2
    ----------- -----------
              0           1
    再来看下面一个例子:

    db2 => select * from test01
    COL1  COL2
    ----- -----
    A01   -
    -     B01
    -     -
    A02   B02
    A03   -
    
    db2 => select count(*) cnt1,count(1) cnt2,count(col1) cnt3,count(col2) cnt4 from test01
    CNT1        CNT2        CNT3        CNT4
    ----------- ----------- ----------- -----------
              5           5           3           2

    count是对符合条件的记录进行统计,也就是说我们读取一条记录,判断其符合条件之后,就让统计变量自增1,

    这样碰到下一条符合记录的数据时又自增1,直到读取到表中数据的末尾;

    我们可以使用sum来对count进行替代,也就是说在找到符合记录的时候就加1,没符合条件的记录就加0;

    这样就可以使用sum替代count来统计employee表中数据,而且只需要读取一次表:

    select count(*) all,
           sum(case when sex='M' then 1 else 0 end) man,
           sum(case when sex='F' then 1 else 0 end) femail
      from employee
    ALL         MAN         FEMAIL
    ----------- ----------- -----------
             42          23          19
    这个查询在实际当中使用得最多,根据同样的输入,统计一个或多个字段中不同标志的记录数。

    --the end--

    展开全文
  • Nhibernate Hql查询使用 sum 和 case 组合

    千次阅读 2011-07-22 19:37:10
    Nhibernate HQL查询中使用sum 和case 组合查询事例,根据实体Entity “otype”字段值,设置查询列‘price’的正负三种写法:1. select sum(case when otype='A' then price when otype
    
    

    在Nhibernate HQL查询中,使用sum 和case 组合

    查询事例,根据实体Entity 中“otype”字段值,设置查询列‘price’的正负

    三种写法:

    1. select   sum(case when  otype='A' then price  when otype='B' then -price  end )  from  Entity  (sql中支持,但hql查询时,控制台查询语句缺少 ‘when otype='B' then -price ’,也就是只有otype='A' 的情况)

    2.select sum(case when otype='A'  then  price  else -price end ) from Entity  (支持)

    3. select sum(case when otype='A'  then  price  else  case when otype='B' then -price end end ) from Entity (支持)

    展开全文
  • 今天项目开发时,遇到了像下图这样的问题: 查询结果会随机出现长串小数,页面...后来发现,是数据库的数据字段类型使用错误导致的。 解决办法: 个人使用的是Postgresql数据库,将字段类型修改为decima...
  • 背景:mysql 查询语句where条件相同,sum、count函数需要使用有多个不同条件。test表内容:目标:查询class=1、mon>=2并且score>=70的score总和、被求和的score个数if 语句实现:case when 语句...
  • 【Java】Mybatis中使用sum对字段求和

    千次阅读 2020-12-28 18:05:40
    如下sql,为计算用户收益总和: ... select sum(income) as totalIncome from income_log where uid = #{uid,jdbcType=BIGINT} </select> 其中返回的求和字段类型需要设置为 BigDecimal:.
  • OracleSUM条件查询

    千次阅读 2018-01-23 14:49:40
    1、按照区域编码分组查询区域编码、IPTV_NBR不为空的数量、ACC_NBR不为空的数量、所有用户数量 SELECT AREA_CODE, SUM ( CASE WHEN IPTV_NBR IS NULL or IPTV_NBR = '' THEN 0 ELSE 1 END ), SUM ( CASE...
  • 开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询,下面使用一个示例说明使用方法
  • ES 根据查询条件求和sum

    千次阅读 2020-11-18 15:45:41
    最简单的查询求和,类似于SQL: select sum(XX) from table where ; 不需要group by. 也就不需要TermsAggregationBuilder dsl: GET /index/base_info/_search { "aggs": { "query_amount": { "sum": { ...
  • mybatis-plus如何使用sum函数统计某一列的总数? 如 统计pig_info表weight字段的总和并返回double类型的数据
  • 今天项目遇到了一个关于sql的问题,统计数据的时候遇到多个sum(column)之间的计算 发现如果其中有一列(该列的数据类型为decimal)的所有数据都为0 select sum(column)的结果会是“NULL” 当NULL与其它数据进行...
  • 1、t_test1表    t_test2表   2、查询需求:求t_test1.num与t_test2.amount之和 ...SELECT SUM(test.num) AS count FROM(SELECT * FROM t_test1 UNION ALL SELECT * FROM t_test2) AS test; ...
  • Mybatis-Plus正确使用sum聚合函数

    千次阅读 2020-11-03 15:52:26
    所以只能退而求其次使用 QueryWrapper 来进行构建查询语句。 简单的例子如下: //求某人的成绩和。 QueryWrapper<People> queryWrapper = new QueryWrapper<>(); queryWrapper.select("IFNULL(sum(score...
  • 目的:需要使用hql查询出各个班级对应的总分; 表对应的类: public class One_Class implements Serializable { private String address; private String subject; private String classes; private int ...
  • sql日常使用sum

    千次阅读 2019-06-10 15:35:53
    今天有个朋友给我发了个sql面试题,使用以下方法完美解决,感觉db方面太low sql设计 SELECT city,COUNT(1),SUM(CASE WHEN star=1 THEN 1 ELSE 0 END),SUM(CASE WHEN star=2 THEN 1 ELSE 0 END) FROM test ...
  • mysql 使用count(),sum()等作为条件查询

    万次阅读 2017-05-25 14:42:29
    mysql 使用count(),sum()等作为条件查询
  • 一条sql查询多个sum

    千次阅读 2018-11-22 16:43:34
    怎么才能把多个sum都取到呢,菜鸟请大神们指教一下
  • 首先举个栗子(不想看的话直接下面看总结): order_type:订单类型 open_id:用户唯一标识 SELECT  date(create_time) AS '当天...sum函数中使用if判断条件:{ sum( IF (order_type = 0, real_price, 0) ) A...
  • 项目碰到一个查询到问题 使用到了SUM()函数 List<PutStorageDetail> initPutStorage = putStorageDetailDao.getInitPutStorageNoSku(stock);这段代码,由于查询使用到了SUM()函数,导致虽然没有任何...
  • 原先的sql语句 mysql没问题。。达梦数据报错。。 SELECT t1.id, t1.cityState, t1.countyName, sum(t1.lossRatio) as lossRatio, sum(t1.lossArea) as lossArea, ... sum(t1.medium) as medium,...
  • sql查询时,需要统计某个字段的值出现的次数,使用sum(字段=值)例: SELECT sum( w.star_level = 0) noStars, sum( w.star_level = 1) oneStars, sum( w.star_level = 2) twoStars, sum( w.star_level = 3) ...
  • MYSQL 中SUM函数和关联查询

    千次阅读 2016-12-17 11:29:09
    前面:昨晚迷迷糊糊的,做积分求和时候,被困住了,本来的需求是有两张表user用户表和credit用户积分表,要统计出用户的总积分并按照积分和递减排序,其中的字段写下面: user表 id username password_...
  • mongodb 聚合查询 $sum

    千次阅读 2020-09-18 17:09:27
    ##mongodb 聚合查询 $sum 1.字段的类型必须相同 比如 ![数据字段类型](https://img-blog.csdnimg.cn/2020091815523675.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9...
  • t 列为 ID 集合 ...想根据 ID 查询 sum(time) time 计算 2016-12 所用时间 sql : SELECT A.date,SUM((LENGTH(A.t)-LENGTH(REPLACE(A.t,B.ranksetid,'')))*B.sumtime)AS time FROM(SELECT DATE_FORMA
  • SQL子查询sum()及减法

    万次阅读 2018-05-13 15:28:09
    需求:查询 C 的结果,其中 C = A - B;A的结果需要连表查询;B的结果也需要连表查询;实现:过程一:select sum(A) from 表a aleft join 表b bon a.pid = b.idwhere b.id = 1;过程二:select sum(B) from 表c cleft ...
  • Hibernate count和sum查询

    千次阅读 2015-12-24 12:01:08
    前些日子用到了Hibernate,本人菜鸟一个,刚接触Hibernate,想做一个count和sum一起的查询,结果卡了老半天,网上百度也没找到结果,后来迫不得已FQ找,最终找到了答案。其实这Hibernate的API文档里写到过,当时没...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 295,370
精华内容 118,148
关键字:

在查询中使用的sum