[英]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.