zoukankan      html  css  js  c++  java
  • SQL之 UNION ALL 和UNION

    有时候复杂的逻辑处理可以交给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语句集(转)
    Oracle 数据库 for update / for update nowait 的区别
    XML 关键字
    JAVA 操作 DBF 文件数据库
    Hibernate 懒加载和 Json 序列化冲突
    MYSQL 语法大全自己总结的
    php-laravel中间件使用
    php-表单验证
    php-laravel安装与使用
    iOS 关于权限设置的问题
  • 原文地址:https://www.cnblogs.com/qinbb/p/5644311.html
Copyright © 2011-2022 走看看