簡體   English   中英

SQL:計算其他表中的百分比,以及要過濾的用戶百分比?

[英]SQL: Calculate percentage in other table, and user percentage to filter?

我有 2 張桌子。 第一個,稱為“用戶”,如下所示:

id | Username
----------------------
1  | time
2  | bill
3  | jeff

第二個,稱為“帖子”,如下所示:

id | user | category
----------------------
1  | bill | 3
2  | tim  | 1
3  | bill | 3
4  | bill | 2

類別列中的每個不同數字對應一個類別。


我正在嘗試創建一個 SQL 查詢,該查詢將獲取所有在特定類別中擁有超過 10% 帖子的用戶。 這是我當前(不工作)代碼對於類別 3 的樣子:

SELECT 
    u.Username, 
    (
        (SELECT COUNT(*) FROM posts WHERE user=u.Username AND category=3) 
        / (SELECT COUNT(*) FROM posts WHERE user=u.Username) 
        * 100
    ) AS percentage 
FROM users u 
WHERE percentage > 10

這個查詢理論上應該返回'bill'。 但是,它不起作用,我在某處有語法錯誤嗎? 還是我的方法不好/錯誤?

您可以直接查詢posts表,而不是使用所有這些子查詢:

SELECT Username,
    (SUM(Category = 3) / COUNT(*)) * 100 AS percentage 
FROM posts
GROUP BY 1
HAVING percentage > 10

where 子句中不能存在百分比別名。 你必須使用having子句。

SELECT 
    u.Username, 
    (
        (SELECT COUNT(*) FROM posts WHERE user=u.Username AND category=3) 
        / (SELECT COUNT(*) FROM posts WHERE user=u.Username) 
        * 100
    ) AS percentage 
FROM users u 
HAVING percentage > 10

暫無
暫無

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

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