[英]self join on multiple count columns
我需要向寫入查詢,並且很難得出結果。
這是我的專欄
電子郵件項目PRODUCT_CATEGORY
我需要選擇特定的emailAddress至少瀏覽過2次類別並且至少具有2種不同的產品的位置
所以記錄可能看起來像這樣
Email ITEM CATEGORY
joe@gmail Bread FOOD
joe@gmail Banana FOOD
joe@gmail Grapes FOOD
joe@gmail Hammer Tools
joe@gmail Hammer Tools
joe@gmail File Tools
meg@gmail Grass GARDEN
meg@gmail Grass GARDEN
meg@gmail Grass GARDEN
meg@gmail Grass GARDEN
我希望結果如下所示。 梅格失蹤是因為她的物品都一樣
Email Categroy DistinctItemCount
joe@gmail.com Food 3
joe@gmail.com Tools 2
我已經涵蓋了類別,但是我看不到如何添加項目計數要求
select * from
(
select Email ,Product_Category, count(Product_Category) As CatCount
from Browsed
group by Email, Product_Category
) a
where CatCount >1
我已經看了很久了。
如果可以的話,請先謝謝您。
嘗試此操作(應在主要的RDBMS上一致地工作)
SELECT Email, Product_Category Category, COUNT(DISTINCT Item) DistinctItemCount
FROM Browsed
GROUP BY Email, Product_Category
HAVING COUNT(DISTINCT Item) > 1
輸出:
| EMAIL | CATEGORY | DISTINCTITEMCOUNT | -------------------------------------------- | joe@gmail | FOOD | 3 | | joe@gmail | Tools | 2 |
這是SQLFiddle演示(MySql)
這是SQLFiddle演示(SQL Server)
以后在發布SQL查詢問題時,請指定RDBMS及其版本
讓我們從消除輸入表中所有重復的條目開始。 http://sqlfiddle.com/#!2/51991/3/0
SELECT DISTINCT Email, ITEM, CATEGORY
FROM Browsed
接下來,讓我們按類別獲取產品計數,其中每個類別中有兩個或多個產品。 我們在此查詢中使用第一個查詢。 http://sqlfiddle.com/#!2/51991/7/0這是用戶和類別的列表,其中用戶在每個類別中查找兩種或更多種不同的產品。
SELECT Email, Category, COUNT(*) Prodcount
FROM (
SELECT DISTINCT Email, ITEM, CATEGORY
FROM Browsed
) U
GROUP BY Email, Category
HAVING Prodcount >= 2
接下來,我們想知道查找兩個或多個不同類別的用戶。 像這樣工作: http : //sqlfiddle.com/#!2/51991/8/0
SELECT Email, COUNT(*) Catcount
FROM (
SELECT DISTINCT Email, CATEGORY
FROM Browsed
) V
GROUP BY Email
HAVING Catcount >= 2
涼。 現在我們知道正在運行的用戶。 是用戶的名稱同時出現在這些結果集中……兩個或多個類別,每個類別中兩個或多個項目。 http://sqlfiddle.com/#!2/8673a/1/0
SELECT W.Email, W.Category, W.Prodcount
FROM (
SELECT Email, Category, COUNT(*) Prodcount
FROM (
SELECT DISTINCT Email, ITEM, CATEGORY
FROM Browsed
) U
GROUP BY Email, Category
HAVING Prodcount >= 2
) W
WHERE W.Email IN
(
SELECT Email
FROM (
SELECT DISTINCT Email, CATEGORY
FROM Browsed
) V
GROUP BY Email
HAVING COUNT(*) >= 2
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.