簡體   English   中英

如何從一張桌子中選擇不同的

[英]How to select distinct from just one table

我有一個具有以下結構的表

view_id | user_agent | view_date | post_id | user_id

我想為每個帖子做一個觀看次數,但是,如果某個特定用戶閱讀了一篇特定的文章超過一次,它仍被視為1個觀看次數。

到目前為止,我已經提出了這個簡單的查詢

SELECT member_id, COUNT(member_id) AS view_count
FROM gw_library_viewcount
WHERE DATE(view_date) = DATE_SUB(DATE(NOW()), INTERVAL 0 DAY)
GROUP BY member_id;

但是,它返回今天每個用戶的觀看次數。 然后我對其進行編輯,使其成為

SELECT COUNT(member_id) AS view_count
FROM gw_library_viewcount
WHERE DATE(view_date) = DATE_SUB(DATE(NOW()), INTERVAL 0 DAY)

這次查詢返回的總數view_count,但是它包含多個viewcount。 我只希望它返回每個帖子的觀看次數,但條件是,如果有一個用戶多次查看該文章,那么它仍被視為一個觀看次數。

我怎樣才能達到這個結果?

干杯

嘗試COUNT(DISTINCT member_id)

那是,:

SELECT COUNT(DISTINCT user_id) FROM gw_library_viewcount WHERE ... GROUP BY post_id;

請注意,不確定是應該是member_id還是user_id ,因為您在問題中已經互換使用了它。

例如,請參閱在MySQL查詢中一起使用DISTINCT和COUNT

您可以使用子查詢來選擇唯一的帖子視圖,如下所示:

SELECT post_id, COUNT(member_id) AS view_count
FROM (
     SELECT DISTINCT member_id, post_id, MAX(view_date) AS view_date
     FROM gw_library_viewcount
     GROUP BY member_id, post_id
) t
WHERE DATE(view_date) = DATE_SUB(DATE(NOW()), INTERVAL 0 DAY)
GROUP BY post_id

編輯:根據OP反饋,從子查詢中將MAX(view_date)刪除了無意義的組

感謝gareththegeek,通過稍微修改一下他的答案,我可以解決這個問題。 這是我正在尋找的查詢。

子查詢主要是為了顯示每個成員在特定的一天閱讀了哪些文章(多次訪問/閱讀仍然算作一)

因此它返回如下結果:

member id | post id | view_date
1 ---------> 1 ------> some_date 
1 ---------> 2 ------> some_date
3 ---------> 1 ------> some_date

等等....

從這里開始,我只計算用戶數。 無論如何,到目前為止,這似乎仍然有效..再次對gareththegeek不利。

SELECT COUNT(member_id) AS view_count
FROM (
    SELECT DISTINCT member_id, post_id, MAX(view_date) AS view_date
    FROM gw_library_viewcount
    WHERE DATE(view_date) = DATE_SUB(DATE(NOW()), INTERVAL 0 DAY)
    GROUP BY member_id, post_id
) AS subquery

*上一個查詢

下面的查詢結果僅在給定間隔為0時才有效。用其他值(例如1(代表昨天))測試時,得出的結果不准確。

SELECT post_id, COUNT(member_id) AS view_count
FROM (
     SELECT DISTINCT member_id, post_id, MAX(view_date) AS view_date
     FROM gw_library_viewcount
     GROUP BY member_id, post_id
) t
WHERE DATE(view_date) = DATE_SUB(DATE(NOW()), INTERVAL 0 DAY)
GROUP BY post_id

暫無
暫無

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

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