MySQL 求低频数中频数高频数

Posted 学习java进行时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 求低频数中频数高频数相关的知识,希望对你有一定的参考价值。

数据表

练习使用 group by having... 语句

假设有 student 表,如下:

+----+------+-----+
| id | name | age |
+----+------+-----+
| 1 | 刘备 | 23 |
| 2 | 关羽 | 22 |
| 3 | 张飞 | 21 |
| 4 | 刘表 | 43 |
| 5 | 刘璋 | 43 |
| 6 | 刘蝉 | 3 |
| 7 | 曹操 | 33 |
| 8 | 曹植 | 13 |
| 9 | 曹丕 | 15 |
| 10 | 关平 | 17 |
+----+------+-----+

问题 1:求出现次数小于 3 次的姓(低频姓)

解:select left(name, 1) from student group by left(name, 1) having count(*)<3;

得到结果集:

+---------------+
| left(name, 1) |
+---------------+
| 关 |
| 张 |
+---------------+

问题 2:求出现次数大于 3 次的姓(高频姓)

解:select left(name, 1) from student group by left(name, 1) having count(*)>3;

得到结果集:

+---------------+
| left(name, 1) |
+---------------+
| 刘 |
+---------------+

问题 3:求出现次数大于 1 次 小于 4 次的姓(中频姓)

解:select left(name, 1) from student group by left(name, 1) having count(*)>1 and count(*)<4;

得到结果集:

+---------------+
| left(name, 1) |
+---------------+
| 关 |
| 曹 |
+---------------+

 

问题 4:求各个姓氏出现的次数(频数统计)

解:select left(name, 1), count(*) from student group by left(name, 1);

得:

+---------------+----------+
| left(name, 1) | count(*) |
+---------------+----------+
| 关 | 2 |
| 刘 | 4 |
| 张 | 1 |
| 曹 | 3 |
+---------------+----------+

问题 5:求各个姓氏出现的次数,并按出现次数由高到低排序(频数统计)

解:select left(name, 1), count(*) from student group by left(name, 1) order by count(*) desc;

得:

+---------------+----------+
| left(name, 1) | count(*) |
+---------------+----------+
| 刘 | 4 |
| 曹 | 3 |
| 关 | 2 |
| 张 | 1 |
+---------------+----------+

 










































以上是关于MySQL 求低频数中频数高频数的主要内容,如果未能解决你的问题,请参考以下文章

1. 两数之和-字节跳动高频题

15. 三数之和-字节跳动高频题

徳哥:PostgreSQL 实时健康监控大屏 - 高频指标

440. 字典序的第K小数字(困难)-字典树-数节点-字节跳动高频题

思维导图整理大厂面试高频数组补充1: 最接近的三数之和 和 三数之和 的两个不同之处, 力扣16

思维导图整理大厂面试高频数组补充1: 最接近的三数之和 和 三数之和 的两个不同之处, 力扣16