有时候复杂的逻辑处理可以交给SQL来处理,自认为是比java处理要快点。

举个例子:如何统计每个品牌的的偏好用户数?

当时我做的处理是在java中处理这些品牌,若是品牌相同,就加一,但是这种方法很慢,用户体验很不好。

后来才发现sql处理速度会很快,就用UNION ALL 来处理。在这里简单说一下UNION和UNION ALL区别,这两个都是用于合并select的结果集。只不过UNION ALL可以允许有重复值。一条sql就可以解决问题。如下:

SELECT
T.BRANDNAME AS brandName,
SUM(T.NUMB) AS userNum
FROM
(
SELECT
PREFER_BRAND1 AS BRANDNAME,
COUNT(PREFER_BRAND1) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND1
UNION ALL
SELECT
PREFER_BRAND2 AS BRANDNAME,
COUNT(PREFER_BRAND2) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND2
UNION ALL
SELECT
PREFER_BRAND3 AS BRANDNAME,
COUNT(PREFER_BRAND3) AS NUMB
FROM
TAS_TAS.TERM_CONT_RECOM_ITEM_201605
GROUP BY
PREFER_BRAND3 ) T
WHERE
T.BRANDNAME!='-9'
GROUP BY
T.BRANDNAME
ORDER BY
SUM(T.NUMB) DESC

这样就可以知道每个品牌的偏好人数了。

SQL之 UNION ALL 和UNION的更多相关文章

  1. SQL学习之组合查询(UNION)

    1.大多数的SQL查询只包含从一个或多个表中返回数据的单条SELECT语句,但是,SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回.这些组合查询通常称为并或复合查询. ...

  2. SQL SERVER: 合并相关操作(Union,Except,Intersect)

    SQL SERVER: 合并相关操作(Union,Except,Intersect) use tempdb create table tempTable1 (id int primary key id ...

  3. SQL Server-聚焦UNIOL ALL/UNION查询(二十三)

    前言 本节我们来看看有关查询中UNION和UNION ALL的问题,简短的内容,深入的理解,Always to review the basics. 初探UNION和UNION ALL 首先我们过一遍 ...

  4. SQL SERVER 使用select和union插入多条数据

    insert into A(A) select '2' union select '3' union select '100' go select * from A

  5. SQL基础-子查询&EXISTS&UNION

    一.子查询 1.使用子查询作为计算字段 子查询:嵌套在其他查询中的查询 现在有两个表,student表和teacher表 创建teacher表,并插入数据: CREATE TABLE `teacher ...

  6. 关于UNION ALL与 UNION 用法和区别

    (转自:http://www.cnblogs.com/EricaMIN1987_IT/archive/2011/01/20/1940188.html) UNION指令的目的是将两个SQL语句的结果合并 ...

  7. SQL SERVER: 合并相关操作(Union,Except,Intersect) - 转载

    SQL Server 中对于结果集有几个处理,值得讲解一下 1. 并集(union,Union all) 这个很简单,是把两个结果集水平合并起来.例如 SELECT * FROM A UNION SE ...

  8. Linq to SQL -- Union All、Union、Intersect和Top、Bottom和Paging和SqlMethods

    Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1. ...

  9. sql语句查询结果合并union all用法

    整理别人的sql 大概的思想是用union 和union all --合并重复行select * from Aunion select * from B --不合并重复行select * from A ...

  10. sql改写or 改成union不等价数据变多

    select count(*) from (SELECT A.* FROM (SELECT CD.*, nvl(CV.SUM_CI_BALANCE, 0) as SUM_CI_BALANCE, nvl ...

随机推荐

  1. 关于Eclipse SVN 分支 与主干 小结

    SVN建立分支和合并代码 https://blog.csdn.net/luofeixiongsix/article/details/52052631 SVN创建指定版本号的分支 https://blo ...

  2. MySQL表锁和行锁

    锁粒度 MySQL 不同的存储引擎支持不同的锁机制,所有的存储引擎都以自己的方式显现了锁机制,服务器层完全不了解存储引擎中的锁实现: InnoDB 存储引擎既支持行级锁(row-level locki ...

  3. ADC和RTC的寄存器的读取

    ADC的寄存器读取,int adc_read(void){ int result; #if ADSTART==0 result = ADC.ADCDAT0&0x3ff; while(!(ADC ...

  4. Jenkins的安装和使用

    1.可以参考W3C----https://www.w3cschool.cn/jenkins/jenkins-5h3228n2.html 两种方式安装Jenkins a.安装包 b.Jenkins.wa ...

  5. 《高级Web应用程序设计》作业(20170904)

    作业1(类型-理论学习,上传ftp,截止日期9月20日) 1.请写出ASP.NET MVC的优点. 2.请写出默认项目模板中以下文件夹或文件的作用.App_Data文件夹.Content文件夹.Con ...

  6. Ansible 小手册系列 六(Patterns 匹配模式)

    Patterns 是定义Ansible要管理的主机.但是在playbook中它指的是对应主机应用特定的配置或IT流程. 命令格式 命令行 ansible <host-pattern> [o ...

  7. rsync的配置文件模板及简单介绍,命令及参数

    必须知道推送有一个限速参数.--bwlimit=100 工作总必须要加.有三种模式,1.本地的模拟cp命令,在一个服务器2.远程的两个服务器之间,模拟scp3.以socket进程监听的方式启动rsyn ...

  8. iOS开发探索-高斯模糊&毛玻璃效果

    iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果,可以通过高斯模糊和毛玻璃效 ...

  9. python decorator 装饰器

    python装饰器是个对嵌套函数的语法糖 作用是在函数调用方法不变的情况下,将函数包装成另一个函数来使用 ---- import time def sum1(): sum = 1 + 2 print ...

  10. 安装spring报错:Cannot complete the install because of a conflicting dependency.

    问题: 在Eclipse里安装Spring插件,help->install new software用端点安装,说是出现软件依赖错误报错如下: Cannot complete the insta ...