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

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

  • 相关阅读:
    友盟消息推送api、python sdk问题、测试demo代码
    Django的时区设置问题
    优酷视频上传api及demo代码
    git回滚线上代码
    charles的使用
    django+ajax用FileResponse文件下载到浏览器过程中遇到的问题
    scrapy框架
    几个简单的算法
    SQLAlchemy
    redis
  • 原文地址:https://www.cnblogs.com/qinbb/p/5644311.html
Copyright © 2011-2022 走看看