-
2020-05-15 15:35:47
oracle数据库对test_table表的三个列count1,count2,count3求sum的两种sql,做个记录
第一种
select sum (case when count1 is not null then count1 when count2 is not null then count2 when count3 is not null then count3 else '0' end ) a from test_table
第二种select sum(decode(count1,null,0,count1) +decode(count2,null,0,count2) +decode(count3,null,0,count3)) a from test_table
更多相关内容 -
ORACLE 条件求和 、显示百分比
2021-06-09 13:37:57sum(case when t.type in ('A') then t.score else 0 end) wgtzb, sum(case when t.type in ('B','C') then t.score else 0 end) wgthb, sum(case when t.age > 40 then t.score else 0 end) thick40 from stu t1、条件求和
例: 统计A类型总分数,B、C总分数,年龄大于15的总分
select sum(case when t.type in ('A') then t.score else 0 end) wgtzb, sum(case when t.type in ('B','C') then t.score else 0 end) wgthb, sum(case when t.age > 15 then t.score else 0 end) thick40 from stu t
2、显示百分比
用decode判断,如果有 .52% 的结果,显示为 0.52%
select decode(TRUNC(m.wgt / m.weight * 100), 0, replace(round((m.wgt / m.weight) * 100, 2), '.', '0.'), round((m.wgt/ m.weight) * 100, 2)) || '%' from xxtable m
-
oracle中sum求和
2018-05-12 15:07:011、按照区域编码分组查询区域编码、IPTV_NBR不为空的数量、ACC_NBR不为空的数量、所有用户数量SELECT AREA_CODE, SUM ( CASE WHEN IPTV_NBR IS NULL or IPTV_NBR = '' THEN 0 ELSE 1 END ), SUM ( CASE ...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
WHEN ACC_NBR IS NULL or ACC_NBR = '' THEN
0
ELSE
1
END
),
COUNT (*)
FROM
GAT_SQMS.GAT_SQMS_BAND_IPTV_VIEW
GROUP BY
AREA_CODE;
2、使用sum条件查询
查询IPTV_NBR不为空的数量
SUM (
CASE
WHEN IPTV_NBR IS NULL or IPTV_NBR = '' THEN
0
ELSE
1
END
)
SUM里边使用CASE WHEN 语句,
当IPTV_NBR IS NULL 为0,ELSE 为1 -
Oracle之--CASE WHEN语句
2021-05-05 03:12:40使用CASE WHEN语句他统计各个年龄段人数SELECTSUM(CASE WHEN (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( t.INPUT_IDCARD, 7, 4 ) ) BETWEEN 20 AND 30 THEN 1 ELSE 0 END) AS "20-30岁",SUM(CASE WHEN (TO_CHAR( ...使用CASE WHEN语句他统计各个年龄段人数
SELECT
SUM(CASE WHEN (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( t.INPUT_IDCARD, 7, 4 ) ) BETWEEN 20 AND 30 THEN 1 ELSE 0 END) AS "20-30岁",
SUM(CASE WHEN (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( t.INPUT_IDCARD, 7, 4 ) ) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS "31-40岁",
SUM(CASE WHEN (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( t.INPUT_IDCARD, 7, 4 ) ) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS "41-50岁",
SUM(CASE WHEN (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( t.INPUT_IDCARD, 7, 4 ) ) BETWEEN 51 AND 60 THEN 1 ELSE 0 END) AS "51-60岁"
FROM t
遇到需要整合的sql是使用CASE WHEN还是UNION呢?
SELECT COUNT(*) FROM t WHERE (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( INPUT_IDCARD, 7, 4 ) ) BETWEEN 20 AND 30
UNION ALL
SELECT COUNT(*) FROM t WHERE (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( INPUT_IDCARD, 7, 4 ) ) BETWEEN 31 AND 40
UNION ALL
SELECT COUNT(*) FROM t WHERE (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( INPUT_IDCARD, 7, 4 ) ) BETWEEN 41 AND 50
UNION ALL
SELECT COUNT(*) FROM t WHERE (TO_CHAR( SYSDATE, 'YYYY' ) - SUBSTR( INPUT_IDCARD, 7, 4 ) ) BETWEEN 51 AND 60
执行结果为
1.CASE WHEN
CASE WHEN - 结果.png
CASE WHEN - 时间.png
2.UNION ALL
UNION ALL - 结果.png
UNION ALL - 时间.png
-
SUM统计使用CASE WHEN
2021-05-08 14:20:25SUM统计使用CASE WHEN如下建立表结构,createtabletest(idintnotnullAUTO_INCREMENT,typeintnotnull,valueintnotnull,primarykey(id));INSERTINTOtest(type,value)VALUES(1,1),(2,2),(3,3),(4,4);根据 根据type的值... -
oracle根据多个不同条件求和
2020-03-13 09:48:28SELECT COUNT(CASE WHEN category LIKE '%外购附件%' THEN 1 END) wgfjcount, COUNT(CASE ... -
oracle 查询sum很慢
2021-05-06 06:21:37这是oracle 查询语句,查出来需要200s,返回行数100,表都不到100w,不加sum很快,加了sum很慢,sql如下:select sum(qty) tag_qty, rc_idfrom (select ser_id,func_get_pdr_count(service_tag, dispatch_time) as ... -
case when和sum case when 写法及拼接字段
2016-06-03 21:51:201 case when 写法 2 sum case when 用法 3 select 拼接字段 示例如下: when 2 then 'C' else 'D' end ) as '类型',count(*) as '数量' from table group by orderType -
Oracle 几种行转列的方式 sum+decode sum+case when pivot
2020-06-20 22:20:47sum(decode(t_item, 'item1', t_num, 0)) item1, sum(decode(t_item, 'item2', t_num, 0)) item2, sum(decode(t_item, 'item3', t_num, 0)) item3, sum(t_num) total from test group by t_name; 方式二: ... -
Oracle中的SUM条件查询
2018-01-23 14:49:401、按照区域编码分组查询区域编码、IPTV_NBR不为空的数量、ACC_NBR不为空的数量...SUM ( CASE WHEN IPTV_NBR IS NULL or IPTV_NBR = '' THEN 0 ELSE 1 END ), SUM ( CASE WHEN ACC_NBR IS NULL or ACC_NBR = -
oracle动态求和分组
2021-03-10 00:01:50问题描述: 这里有很多条记录,其中需要按照数量字段,进行合并 合并规则: 按照合并数量和>=6的合并为一条记录 合并之后的记录,有新的ID 思路:先根据数量排序,再根据和为6进行分组标记,然后根据标记求和,最后筛选记录;... -
Oracle 去重求和方式一
2020-07-02 18:02:24( SELECT ROW_NUMBER ( ) OVER ( PARTITION BY CASE_ID ORDER BY DETECT_TIME ) rn, JCZF_DANGER.* FROM JCZF_DANGER ) j LEFT JOIN ( SELECT case_id, sum( NVL( PENALTY_ORG_FINE, 0 ) ) AS orgTotalMoney,... -
Oracle 集合函数(count,sum等)和case when的组合使用
2021-04-30 09:06:06假设表A,有1个字段是状态字段,状态值有1,2,3如果没有查询条件可以这样,如果查询条件很复杂时,这个语句就没法看了如果涉及到表联合,group by ,那就更复杂了select(select count(*) from A where state=1 and 其他条件... -
数据库中sum条件求和(举例)
2019-07-15 18:30:31数据库中sum条件求和 举例 假设数据库中有 A B C A1 炒肉 100 B1 烧肉 200 C1 优惠 -30 客户点了两个菜 最后优惠了-30 然后进行主表查询 主表中显示 客户支付金额,及优惠金额 一句sql进行查询=======&... -
一道sql题,case when 配合 sum 求总和
2021-07-22 15:36:501、表结构,三张表,流程表wf_task、法人表cust_legal,订单表 CREATE TABLE `wf_task` ( `id` varchar(32) NOT NULL, `buss_no` varchar(128) NOT NULL DEFAULT '' COMMENT '订单号', `cust_id` varchar(32) ... -
Oracle中Case When的用法
2021-11-08 20:18:28一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 END FROM table1; 1.2、检索的cse表达式 SELECT CASE WHEN 条件1 THEN ... -
Oracle简单的max/sum判断
2021-10-29 14:11:36一.原表 二.整合 我们想要type1栏位中,有逗号的就计算数量的和,没有逗号的就取最大值 ...(case when max(type1) like '%,%' then sum(quantity) else max(quantity) end)quantity from you_table GROUP BY type1 -
Oracle 分组求和(特殊处理)
2018-03-26 14:58:43对于编程人员的我们来说,写sql应该是不可避免的,要...无论是取最大值或求和等操作,我们一般都会用到这些语句,既然是如此常用的语句,那我们就一起来看看它的一些用法吧。 知识无极限,与你来相见,欢迎点赞支持! -
MySQL中group by , sum , case when then 的使用
2021-01-18 23:21:45在我们使用数据库的时候,可能会遇到需要进行...在mysql中我们可以使用group by sum case when 来解决这个问题,sql语句如下:select date_year,sum(case when win_lose = '胜' then 1 else 0 end) win,sum(case whe... -
数据库SQL之学习SUM总和套用条件CASE WHEN语句
2021-03-15 18:31:24数据库SQL之学习SUM总和套用条件CASE WHEN语句1.SQL之学习SUM总和套用条件CASE WHEN语句2.条件语句CASE WHEN 格式已经在图中写的很明白了-- 查询t_wzw库中所有数据 总和(条件为t_wzw.birthday = date_sub函数(当前... -
oracle 多列求和
2019-06-04 10:15:00第一种: select sum(decode(count1,null,0,count1) +decode(count2,null,0,count2) +decode(count3,null,0,count3)) a from test_table ...select sum (case when count1 is not null then count1 when ... -
sql 完成sum(不包含部分行操作)--oracle
2021-05-08 17:57:24按照每一天统计总和,但是不包括,12014,13003,12030,当id=12013时候,取负值 sql:写法一 select t.date,sum( case when id='12014' then 0 when id='13003' then 0 when stcdt='12030' then 0 when stcdt='... -
oracle对查询结果求和_oracle基础知识分享
2020-11-20 01:36:36原文链接:https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0以下是本人整理的ORACLE学习的一些基本的语法...-防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.2.CHECK (... -
利用sum来实现行列转换-Oracle
2021-05-06 07:02:03利用sum来实现行列转换原始表如下: www.2cto.com预期想要将表中的每一个IDX_CODE分别在查询结果中各显示一列,结果表如下:建表语句如下:create table test(IDX_DATA_ID NUMBER(12) not null,org_no NUMBER(2),org... -
oracle 分组求和一个小例子
2015-04-09 14:19:06当然,用了decode()函数,那也可以用case函数了。 失败的sql语句: --方式2 select distinct a.req_time, a.fail, b.success from ( select req_time, count (*) fail from gw_log where... -
Oracle中碰到的函数和关键字收集
2021-05-02 02:24:121、时间处理函数trunc(sysdate) 返回日期sqlto_date()oracleto_char(sysdate,'yyyy-mm-dd hh24:mi:ss')appto_number() 转为数字函数2、字符串处理函数oopsubstr(bag.serialid, 0, 13) 截取字符串sparegexp_substr(i_... -
oracle对三个列求sum
2017-06-30 10:40:07oracle数据库对test_table表的三个列count1,count2,count3求sum的两种sql -
Oracle 中总计和小计使用的函数
2021-01-28 10:36:30@[TOC](总计和小计、逐行累计求和)### 一、总计和小计使用函数#### 1、rollupgroup by 我们都知道,是一个分组函数,用于针对某一列做分组操作。但是当它搭配其他的函数一起使用的时候,就像一对男女孩,撞出不一样... -
Oracle中的函数 字符串、数字、日期
2021-05-05 07:05:17--case:类似于java的if select deptno, case deptno when 10 then '市场部' when 20 then '研究部' when 30 then '人事部' else '其他部' end from scott.emp; --统计工资级别(取范围是用,>=运算符) select sal,... -
Oracle表行列转置,求和
2020-03-01 17:06:45表转置,求和,是很常用的方式 上代码: create table win ( rq varchar2(10), shengfu varchar2(2)); insert into win(rq,shengfu) values('2005-05-09','胜'); insert into win(rq,shengfu) values('2005-05-09',...