序文
多くの友人がデータベースの検索を実行している場合、グループ フィルタリングが必要な状況に遭遇します。
例: 各学校ユーザーの平均投稿数と返信数をチェックし、重要な操作のために活動の少ない学校を見つけたい場合、平均投稿数が 5 未満の学校、または平均返信数が少ない学校を選択してください。 20校以上。
この記事では、この例を分析し、主に having 関数の使用法を紹介します。
リンクの例: SQL19 グループ フィルタリングの演習
1.持つことの紹介
使い方:集計関数の結果をフィルター条件とする場合、whereは使えず、having構文を使い、リネームで使う
詳細については、以下を参照してください: GROUP BY および HAVING の使用法 概要
データベース クエリ ステートメント – HAVING の使用法
2. 利用分析
//数据库表结构
id device_id gender age university gpa active_days_within_30 question_cnt answer_cnt
1 2138 male 21 北京大学 3.4 7 2 12
2 3214 male null 复旦大学 4.0 15 5 25
3 6543 female 20 北京大学 3.2 12 3 30
4 2315 female 23 浙江大学 3.6 5 1 2
5 5432 male 25 山东大学 3.8 20 15 70
6 2131 male 28 山东大学 3.3 15 7 13
7 4321 female 26 复旦大学 3.6 9 6 52
//搜索语句
select
university,
avg(question_cnt) as avg_question_cnt,
avg(answer_cnt) as avg_answer_cnt
from user_profile
group by university
having avg_question_cnt < 5 or avg_answer_cnt < 20