簡體   English   中英

有什么方法可以將DISTINCT的結果分組並正確地將COUNT行分組?

[英]Any way to group the result of a DISTINCT and get the COUNT of the rows grouped correctly?

我有這個查詢:

SELECT DISTINCT w.buyer_id, u.username, a.cb_id
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id

因此,基本上,我試圖找出每個w.buyer_id關於a.cb_id涉及多少個唯一條目。

為此,我運行了上面的查詢,並得到了一行一行的結果,這很好,因為它顯示了所有唯一值; 因此我可以看到用戶A有14行(其中涉及14個唯一的CB ID),用戶B可能有5行。

因此,我想這樣做,以便獲得記錄集,輸出為:

w.buyer_id,u.username,count

我嘗試了以下方法:

SELECT DISTINCT w.buyer_id, u.username, a.cb_id, COUNT(*) AS unique_spots
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id
GROUP BY w.buyer_id
LIMIT 5000;

...但是它返回COUNT ,就好像我什至沒有對記錄集應用DISTINCT

我在這里做錯了什么?

僅編寫查詢直接執行您想要的操作怎么樣?

SELECT w.buyer_id, COUNT(DISTINCT a.cb_id)
FROM winners w INNER JOIN
     auctions a
     ON w.auction_id = a.auction_id AND a.cb_id > 0 AND
        a.category_id = 1922 INNER JOIN
     users u ON w.buyer_id = u.user_id
GROUP BY w.buyer_id;

加入users似乎是多余的:

SELECT w.buyer_id, COUNT(DISTINCT a.cb_id)
FROM winners w INNER JOIN
     auctions a
     ON w.auction_id = a.auction_id AND a.cb_id > 0 AND
        a.category_id = 1922 
GROUP BY w.buyer_id;

您是否嘗試過:

SELECT w.buyer_id, u.username, a.cb_id, COUNT(*) AS unique_spots
FROM winners AS w
INNER JOIN auctions AS a ON w.auction_id=a.auction_id AND a.cb_id > 0 AND a.category_id=1922
INNER JOIN users AS u ON w.buyer_id=u.user_id
GROUP BY w.buyer_id, u.username, a.cb_id
LIMIT 5000;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM