最后总结
ActiveMQ+Kafka+RabbitMQ学习笔记PDF
关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
分组查询SQL:
SELECT
SUM(c.users_count) AS ‘用户数量’,
CASE c.city
WHEN ‘济南’ THEN ‘山东省’
WHEN ‘青岛’ THEN ‘山东省’
WHEN ‘枣庄’ THEN ‘山东省’
WHEN ‘广州’ THEN ‘广东省’
WHEN ‘深圳’ THEN ‘广东省’
ELSE ‘其他’ END AS ‘归属省’
FROM
users_area c
GROUP BY CASE c.city
WHEN ‘济南’ THEN ‘山东省’
WHEN ‘青岛’ THEN ‘山东省’
WHEN ‘枣庄’ THEN ‘山东省’
WHEN ‘广州’ THEN ‘广东省’
WHEN ‘深圳’ THEN ‘广东省’
ELSE ‘其他’ END;
查询结果:
mysql> SELECT
-> SUM(c.users_count) AS ‘用户数量’,
-> CASE c.city
-> WHEN ‘济南’ THEN ‘山东省’
-> WHEN ‘青岛’ THEN ‘山东省’
-> WHEN ‘枣庄’ THEN ‘山东省’
-> WHEN ‘广州’ THEN ‘广东省’
-> WHEN ‘深圳’ THEN ‘广东省’
-> ELSE ‘其他’ END AS ‘归属省’
-> FROM
-> users_area c
-> GROUP BY CASE c.city
-> WHEN ‘济南’ THEN ‘山东省’
-> WHEN ‘青岛’ THEN ‘山东省’
-> WHEN ‘枣庄’ THEN ‘山东省’
-> WHEN ‘广州’ THEN ‘广东省’
-> WHEN ‘深圳’ THEN ‘广东省’
-> ELSE ‘其他’ END;
±-------------±----------+
| 用户数量 | 归属省 |
±-------------±----------+
| 1230 | 其他 |
| 520 | 山东省 |
| 750 | 广东省 |
±-------------±----------+
3 rows in set (0.00 sec)
二、函数:IF(expr,if_true_expr,if_false_expr)
===========================================================================================================
在mysql中if()
函数的用法类似于java中的三目表达式,具体语法如下:
IF(expr,if_true_expr,if_false_expr)
,如果expr的值为true,则返回if_true_expr的值,如果expr的值为false,则返回if_false_expr的值。
- 使用场景1:IF函数通常用于真实数据被替代的列;如性别,我们在库中一般用tinyint存储,男 = 1,女 = 2;如查询时需转成字符,该场景就适用于IF函数。
原数据:
mysql> select * from student;
±—±----------±----±--------±----------+
| ID | NAME | SEX | GRADE | HOBBY |
±—±----------±----±--------±----------+
| 1 | 陈哈哈 | 1 | 9年级 | 上网 |
| 2 | 扈亚鹏 | 1 | 9年级 | 美食 |
| 3 | 刘晓莉 | 2 | 9年级 | 金希澈 |
| 5 | 徐立楠 | 2 | 9年级 | 阅读 |
| 6 | 顾昊 | 1 | 9年级 | 篮球 |
| 7 | 陈子凝 | 2 | 9年级 | 看电影 |
| 14 | 朱志鹏 | 1 | 9年级 | 看小说 |
| 15 | 贾旭 | 1 | 9年级 | 吹牛逼 |
| 19 | 李昂 | 1 | 9年级 | 看片儿 |
±—±----------±----±--------±----------+
9 rows in set (0.00 sec)
处理sex字段为字符格式展示;
mysql> SELECT NAME
,IF(sex = 1,‘男’,‘女’) FROM student;
±----------±------------------------+
| NAME | IF(sex = 1,‘男’,‘女’) |
±----------±------------------------+
| 陈哈哈 | 男 |
| 扈亚鹏 | 男 |
| 刘晓莉 | 女 |
| 徐立楠 | 女 |
| 顾昊 | 男 |
| 陈子凝 | 女 |
| 朱志鹏 | 男 |
| 贾旭 | 男 |
| 李昂 | 男 |
±----------±------------------------+
9 rows in set (0.00 sec)
如果将(1,2)格式数据改为(‘男’,‘女’)也可以通过IF函数修改(记得先修改列类型),SQL如下:
mysql> UPDATE student set sex = IF(sex = 1,‘男’,‘女’);
Query OK, 9 rows affected (0.06 sec)
Rows matched: 9 Changed: 9 Warnings: 0
修改后数据:
mysql> select * from student;
±—±----------±----±--------±----------+
| ID | NAME | SEX | GRADE | HOBBY |
±—±----------±----±--------±----------+
| 1 | 陈哈哈 | 男 | 9年级 | 上网 |
| 2 | 扈亚鹏 | 男 | 9年级 | 美食 |
| 3 | 刘晓莉 | 女 | 9年级 | 金希澈 |
| 5 | 徐立楠 | 女 | 9年级 | 阅读 |
| 6 | 顾昊 | 男 | 9年级 | 篮球 |
| 7 | 陈子凝 | 女 | 9年级 | 看电影 |
| 14 | 朱志鹏 | 男 | 9年级 | 看小说 |
| 15 | 贾旭 | 男 | 9年级 | 吹牛逼 |
| 19 | 李昂 | 男 | 9年级 | 看片儿 |
±—±----------±----±--------±----------+
9 rows in set (0.00 sec)
- 使用场景2:沿用上面的班级表,查询男生和女生的总人数;SQL如下:
(sex='男’的返回1,然后用SUM相加得出男生人数,女生同理。)
SELECT SUM(IF(sex = ‘男’,1,0)) as boyNum, SUM(IF(sex = ‘女’,1,0)) as girlNum from student;
mysql> SELECT SUM(IF(sex = ‘男’,1,0)) as boyNum,SUM(IF(sex = ‘女’,1,0)) as girlNum from student;
±-------±--------+
| boyNum | girlNum |
±-------±--------+
| 6 | 3 |
±-------±--------+
1 row in set (0.00 sec)
=======================================================================================
IFNULL函数是MySQL控制流函数之一,它有两个参数,两个参数可以是真实值或表达式,如果expr1不是NULL,则返回第一个参数(expr1)。 否则,IFNULL函数返回第二个参数。
原始数据:
mysql> select * from student;
±—±----------±-----±--------±----------+
| ID | NAME | SEX | GRADE | HOBBY |
±—±----------±-----±--------±----------+
| 1 | 陈哈哈 | 男 | 9年级 | 上网 |
| 2 | 扈亚鹏 | 男 | 9年级 | 美食 |
| 3 | 刘晓莉 | 女 | 9年级 | 金希澈 |
| 5 | 徐立楠 | 女 | 9年级 | 阅读 |
| 6 | 顾昊 | 男 | 9年级 | 篮球 |
| 7 | 陈子凝 | 女 | 9年级 | 看电影 |
| 14 | 朱志鹏 | NULL | 9年级 | 看小说 |
| 19 | 李昂 | NULL | 9年级 | 看片儿 |
±—±----------±-----±--------±----------+
8 rows in set (0.00 sec)
将SEX为NULL的数据展示为:‘未知’:
mysql> SELECT NAME
,IFNULL(sex,‘未知’) from student;
±----------±---------------------+
| NAME | IFNULL(sex,‘未知’) |
±----------±---------------------+
| 陈哈哈 | 男 |
| 扈亚鹏 | 男 |
| 刘晓莉 | 女 |
| 徐立楠 | 女 |
| 顾昊 | 男 |
| 陈子凝 | 女 |
| 朱志鹏 | 未知 |
| 李昂 | 未知 |
±----------±---------------------+
8 rows in set (0.00 sec)
============================================================================
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
e_16,color_FFFFFF,t_70#pic_center)
[外链图片转存中…(img-dtxXjiz7-1715320815527)]
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
[外链图片转存中…(img-jRRkz2Xy-1715320815527)]