有兩種方法可以使用having篩選count后的最大數據:
方法一:先使用group by分組,然后使用having篩選最大值
例如,假設有一個orders表,其中有order_id和customer_id兩列,我們想要找出每個customer_id下的訂單數量,并篩選出數量最大的那個customer_id,可以使用以下SQL語句:
SELECT customer_id, COUNT(order_id) as order_count
FROM orders
GROUP BY customer_id
HAVING order_count = (SELECT MAX(order_count) FROM (SELECT COUNT(order_id) as order_count FROM orders GROUP BY customer_id) as counts)
這里先使用group by將orders表按照customer_id分組,然后使用COUNT函數計算每個分組內的訂單數量并命名為order_count。在having子句中,通過子查詢找出所有分組中order_count的最大值,然后篩選出order_count等于該最大值的分組,即為數量最多的那個customer_id。
方法二:使用order by和limit篩選count后的最大數據
另一種方法是,使用order by將count后的結果按照數量從大到小排序,然后使用limit篩選出得分最高的記錄。
例如,假設有一個scores表,其中有student_id和score兩列,我們想要找出得分最高的那個學生,可以使用以下SQL語句:
SELECT student_id, COUNT(score) as score_count
FROM scores
GROUP BY student_id
ORDER BY score_count DESC
LIMIT 1
這里也是使用group by將scores表按照student_id分組,然后使用COUNT函數計算每個分組內的得分數量并命名為score_count。接著,在order by中將結果按照score_count從大到小排序。最后,在limit中限制只返回第一條記錄,即得分最高的那個學生的信息。