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
這樣就可以知道每個品牌的偏好人數了。
?
轉載于:https://www.cnblogs.com/qinbb/p/5644311.html
總結
以上是生活随笔為你收集整理的SQL之 UNION ALL 和UNION的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 包装函数
- 下一篇: noip模拟赛 radius