with as 的专业解释我这就不详细说明了,我这就梳理下我自己的实践应用,就是根据某个条件查询出结果集放在一个临时表里面,可以创建多个临时表,然后再从这些临时表中查询出要的数据。

  参考资料:https://www.cnblogs.com/Niko12230/p/5945133.html

         http://www.cnblogs.com/CareySon/archive/2011/12/12/2284740.html

查询语句:

--开店数
WITH temp_reg AS
(SELECT a.app_muid
,a.user_id
,a.created_time
FROM dataayn_v1.dci_user_action_register a
inner join dataayn_v1.dci_stores b on a.user_id = b.user_id
WHERE b.open_time < to_date('2018-10-01','yyyy-mm-dd')
AND b.open_time >= to_date('2018-09-01','yyyy-mm-dd')),
temp_mapp AS
(SELECT b.app_muid
,b.hannels
,b.advertiser_id
FROM dataayn_v1.dci_appmuid_hannels_mapp b
WHERE b.created_time = (SELECT MIN(created_time)
FROM dataayn_v1.dci_appmuid_hannels_mapp d
WHERE d.app_muid = b.app_muid)) SELECT b.hannels
,b.advertiser_id
,nvl(COUNT(1),0) 开店数
FROM temp_reg a
INNER JOIN temp_mapp b
ON a.app_muid = b.app_muid
GROUP BY b.hannels
,b.advertiser_id ;

** nvl() 函数,空值判断函数

  NVL(表达式1,表达式2):如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。

  NVL2(表达式1,表达式2,表达式3):如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值。

  参考资料:https://www.cnblogs.com/feifeicui/p/9337186.html

** count()函数:

  count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL

  count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL

  count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计

数据库学习(四)with as (补充 nvl 和 count 函数)的更多相关文章

  1. 蜜果私塾:informix数据库学习合集[不断补充]

    一.infomix使用备忘录     目录结构:     1. 启动与停止命令:      2. 修改数据库编码:      3. 查看informix占用的端口:      4. 使用dbacces ...

  2. MySQL数据库学习四 存储引擎和数据类型

    4.1存储引擎 1. 查看MySQL DBMS所支持的存储引擎 SHOW ENGINES;

  3. 数据库学习(三) sql语句中添加函数 to_char,round,连接符||

    ** to char 是把日期或数字转换为字符串  to date 是把字符串转换为数据库中得日期类型  参考资料:https://www.cnblogs.com/hllnj2008/p/533296 ...

  4. MYSQL数据库学习十四 存储过程和函数的操作

    14.1 为什么使用存储过程和函数 一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句. 存储过程和函数的优点: 允许标准组件式编程,提高了S ...

  5. DB2数据库常用命令数据库学习

    DB2数据库常用命令数据库学习你可以用 get snapshot for locks on XXX 看是那个表锁了,再从相关的操作去查原因吧 db2pd -d 库名 -locks和db2pd -d 库 ...

  6. 关于SQL SERVER数据库学习总结

    对于SQL SERFVER数据库也学了有一阵子了,自己也对自己所学做了一些总结. 我们首先学习数据库设计的一些知识点和用SQL语句建库. 设计数据库步骤:需求分析阶段,概要设计阶段,详细设计阶段, 建 ...

  7. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Android JNI学习(四)——JNI的常用方法的中文API

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  9. 数据库学习---SQL基础(二)

    数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) 上篇复习的sql的增删改查,and ,or ,>=, <=,!=等逻辑运算符,还有in ...

随机推荐

  1. 2017.9.11 初入HTML学习

          第二章 静态网页开发技术 静态网页是指可以由浏览器解释执行而生成的网页,HTML是一组标签,负责网页的基本表现形式: JavaScript是在客户端浏览器运行的语言,负责在客户端与用户的互 ...

  2. Hashtable详细介绍(源码解析)和使用示例

    第1部分 Hashtable介绍 Hashtable 简介 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射. Hashtable 继承于Dic ...

  3. jeesite介绍及链接

    https://github.com/thinkgem/jeesite   (需FQ) JeeSite 是一个企业信息化开发基础平台,Java企业应用开源框架,Java EE(J2EE)快速开发框架, ...

  4. C# File流操作

    #region 文件读出 private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenF ...

  5. JavaEE权限管理系统的搭建(五)--------RBAC权限管理中的权限菜单的显示

    上一小节实现了登录的实现,本小节实现登录后根据用户名查询当前用户的角色所关联的所有权限,然后进行菜单的显示.登录成功后,如下图所示,管理设置是一级菜单,管理员列表,角色管理,权限管理是二级菜单. 先来 ...

  6. py faster rcnn+ 1080Ti+cudnn5.0

    看了py-faster-rcnn上的issue,原来大家都遇到各种问题. 我要好好琢磨一下,看看到底怎么样才能更好地把GPU卡发挥出来.最近真是和GPU卡较上劲了. 上午解决了g++的问题不是. 然后 ...

  7. JavaScript js调用堆栈(二)

    本文主要介绍JavaScript的内存空间 var a = 20; var b = 'abc'; var c = true; var d = { m: 20 } 首先需要对栈(stack),堆(hea ...

  8. Java基础随笔2

    各类运算符: 算数运算符::+,-,*,/,%,++,-- ++:自增 --:自减 单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的. 参与操作的时候: 如果++或者--在变量的 ...

  9. spring(三)-事务管理

    1. Spring事务管理 事务管理:本质是使用spring管理事务,完成数据库对于事务的支持. 事务:一系列对数据库操作的集合,一个操作错误,所有都必须回滚,其特点是acid. (1)事务并发存在问 ...

  10. springboot2.04+mybatis-plus+swagger2+CodeGenerator

    @author zhangyh SpringBoot技术栈搭建个人博客[项目准备]  RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式 原型设计 事实上,我是直接先去找的原 ...