需求: 同时:中文名重复了就是1部剧,不重复就是多部剧 需求分析: 这个需要分组、需要统计、需要判断、需要distinct。...分组:根据地区、类别、中文名称分类; 判断:根据类型进行判断同时要求和 因为中文名称重复的就是1部,所以统计的时候,要使用到distinct去重。...表语句: DROP TABLE IF EXISTS `yj_item_plan`; CREATE TABLE `yj_item_plan` ( `id` bigint(20) NOT NULL AUTO_INCREMENT...(CASE when t.play_classification = 10 then t.submit_num else 0 end ) as '电视剧集数' , SUM(CASE when...:05:10' and '2021-08-29 09:05:10' group by t.play_name_zh ,t.producing_area ,t.play_classification; 结果
DISTINCT 使用 DISTINCT 关键字可以去掉查询中某个字段的重复记录。...小张 SQL 语句: SELECT DISTINCT(username) FROM user 返回查询结果如下: username 小李 小张 小王 提示 使用 DISTINCT 关键字去掉重复记录具有较大的局限性...DISTINCT() 只能包含一个字段且查询结果也只返回该字段而非数据完整记录(如上例所示)。...可以尝试使用如下语法: SELECT DISTINCT(column),column1,column2,......FROM tb_name 该查询结果将返回列出的所有字段,但该查询往往使 column 的唯一性失效,且 column 1,column 2,… 不能放在 DISTINCT(column) 之前。
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句。...case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,case看起来更规范和易读 #case条件语句的语法格式 case "变量" in...read读取用户输入的数据,然后使用case条件语句进行判断,根据用户输入的值执行相关的操作 #执行效果 [root@shell scripts]# sh num.sh please input a...read读取用户输入的数据,然后使用case条件语句进行判断,根据用户输入的值执行相关的操作,给用户输入的水果添加颜色 #扩展:输出菜单的另外种方式 cat<<-EOF ================...、比较,应用比较广,case条件语句主要是写服务的启动脚本,各有各的优势。
【分析思路】 领取红包用到的表是“领取红包”表。出现“每个月”这样的字眼,和就要想到用分组汇总来解决此类问题,按“月份”分组。 使用month(日期)获取月份。...用case语句来判断。...代入上面sql语句,查询结果如下图 【本题考点】 1.多表查询的理解和灵活应用,记住下图可以解决99%的多表查询问题。...2.有“每个”出现的时候,要想到用分组汇总来解决。 3.条件判断的问题,用case语句来解决,例如本文的面试题“新用户“、”老用户“。...4.按条件统计数量的时候,要结合case语句和sum来统计数,例如之前课程里讲过的下面案例
按“客户id”分组,对“运单号”统计数目得到单量(count),注意要用distinct对运单号去重。...image.png 在上一步查询结果的基础上(作为子查询),再使用一次汇总分析,按“单量区间”分组(group by),对客户id汇总得到客户数(count)。...,得到“最终结果”: image.png 按《猴子 从零学会SQL》里教的,把“最终结果”导出到Excel里,对数据进行可视化可以更方便的观察数据。...image.png 【本题考点】 1.当遇到“每个”这类问题,要想到用分组汇总或者窗口函数 2.考查对子查询的灵活使用,嵌套了两次子查询,也就是把上一步查询结果作为子查询 3.考查对常见函数的了解:...count()、group by()、distinct、case when,以及它们的组合使用 4.当遇到“区间”问题的时候,要想到用多条件判断(case语句)解决 5.考察遇到业务问题,如何用逻辑树分析方法把复杂问题变成矿业解决的子问题
【面试题】 "课程订单表”里记录了某在线教育App的用户购买课程的信息(部分数据截图)。 请使用sql将购买记录表中的信息,提取为下表(复购分析表)的格式。并用一条sql语句写出。...【解题思路】 这是常见的复购问题,也就是将用户按购买时间分组,比较不同时间组的用户复购数。其本质是使用里了群组分析方法,将数据按某些特征进行分类,分成不同的组进行分析。...按每天分组(group by ),汇总购买用户数(计数函数count)。...语句选出时间间隔<=1个月的数据,并计数就是此月复购用户数 count(distinct case when 时间间隔<=1 then 用户id else null...2.灵活使用case来统计when 函数与group by 进行自定义列联表统计。 3.遇到只有一个表,但是需要计数时间间隔的问题,就要想到用自联结来求时间间隔。
Mysql数据库中CASE WHEN语句,是用于计算条件列表并返回多个可能结果表达式之一。...有一个学生表:students(id, name ,birthday, sex, grade),要求按每个年级统计男生和女生的数量各是多少,统计结果的表头为:年级,男生数量,女生数量。...有一张表table2(语文成绩、数学成绩、英语成绩),请用一条sql语句按以下显示条件得出结果: 显示条件:大于或等于80显示为优秀,大于或等于60表示及格,小于60分表示不及格。...有如下人口统计数据,要求按照国家和性别进行分组,得出结果如下: ? ?...与distinct结合,去重分组统计 # 统计每个类型的数量 select count(distinct case when type='1' then id else null end )type1
按照各城市(也就是每个城市)分组 (group by),统计用户数(计数函数count,加上distinct去掉重复的用户id)、总费用(求和函数sum) select 城市,count(distinct...(1)各城市(每个城市),也就是按城市分组 (group by) select 城市from 各城市用户ARPU值group by 城市; (2)对用户的ARPU值进行分类,用case when 语句选出...2.查找重复数据,可以在分组汇总后,使用having对分组结果指定条件,如果汇总数据的值>=2就是重复数据。...3.对于分类,或者按条件的业务问题使用case来解决 【举一反三】 现在商家推出一款活动,如果用户将商品发到朋友圈,点赞数小于6的奖励零食;,点赞数大于等于6的奖励充电宝。...下面是记录该活动的“活动表”。 找出哪些用户获得什么奖品。 【解题思路】 大白话为:根据用户(用户id)分组(group by),用case when 语句选出点赞数的区间,符合并计数。
参考链接: C++ switch..case语句 C++作为C语言的升级版,支持很多C语言不支持的语法。...fun() { int n = 6; int i = 0; for (i = 0; i < 3; i++) { n += i; } return n; } 不过,如果使用...++新的语法支持,在switch..case的分支case 1中,定义了整形变量n,并且把它赋值为1。...这段代码完全合法,编译通过(VS2012环境中),运行结果如下图所示,一切正常。 问题出现在当我们尝试初始化整形变量n的时候。...整形变量n的作用域是swtich..case结构被花括号括起来的整个部分:虽然整形变量n的定义在case 1标签下面,但它对于case 2和case default都是可见的,可以把case 2和case
: sum,avg可以处理数值型数据,max,min,count可以处理任何类型数据 以上几个分组函数都会自动忽略null值 可以和distinct搭配使用 # 分组函数 /* 分类:sum 求和,avg...分类: 按子查询出现的位置: SELECT 后面(仅支持标量子查询) FROM 后面(支持表子查询) WHERE或HAVING后面(标量子查询,列子查询,行子查询) EXISTS 后面(表子查询)按结果集的行列数不同...,行子查询) EXISTS 后面(表子查询) 按结果集的行列数不同: 标量子查询(结果集只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集有一行多列) 表子查询(结果集一般多行多列...:将多条查询语句的结果合并成一个结果 语法: 查询语句 union 查询语句 ......应用场景:要查询结果来自多个表,且多个表没有直接的连接关系,单查询的信息一致 特点: 要求多条查询语句的查询列数是一致的 要求多条查询语句每一列的类型和顺序最好是一致的 UNION关键字会自动去重,如果不想去重可以使用
case函数 #2.case函数的使用一:switch case 的效果 /* java 中 switch(变量或表达式){ case 常量1:语句1;break;...DEFAULT:语句n;break; } mysql 中 case 要判断的字段或表达式 when 常量1 then 要显示的值1或语句1; when 常量2 then 要显示的值2或语句2; ......ELSE{ 语句n; } mysql 中: CASE WHEN 条件1 THEN 要显示的值1或语句1; WHEN 条件2 THEN 要显示的值2或语句2; ........用法二的结果: ? tips:对于两种case的用法,全部都已经展示在了代码行中,各位同学自己查看即可哈! 三、分组函数 (1)基本功能 功能:用作统计使用,又称为聚合函数或统计函数或组函数。...count 可以处理任何类型 2、以上分组函数都忽略null值 3、可以和关键字distinct搭配使用,实现去重的运算 4、count函数的单独介绍 一般使用count(*)用作统计行数 5、和分组函数一同查询的字段要求是
SQL不仅可以从数据库中读取数据,还能通过不同的SQL函数语句直接返回所需要的结果,从而大大提高了自己在客户端应用程序中计算的效率。...ORDER BY price_new DESC LIMIT 9,1; 排名 数值相同的排名相同且排名连续 SELECT prod_price, (SELECT COUNT(DISTINCT prod_price...:从字符串的第 4 个字符位置开始取,只取 2 个字符 SELECT substring('example.com', 4, 2); 按关键字截取字符串 取第一个分隔符之前的所有字符,结果是www SELECT...Products.vend_id=Vendors.vend_id AND OrderItems.prod_id=Products.prod_id AND order_num=20007; 自联结 在一条SELECT语句中多次使用相同的表...Excel中数据透视表的功能 数据分组 group by 用于数据分组 having 用于分组后数据的过滤 SELECT order_num,COUNT(*) as items FROM OrderItems
SQL不仅可以从数据库中读取数据,还能通过不同的SQL函数语句直接返回所需要的结果,从而大大提高了自己在客户端应用程序中计算的效率。...ORDER BY price_new DESC LIMIT 9,1; 排名 数值相同的排名相同且排名连续 SELECT prod_price, (SELECT COUNT(DISTINCT prod_price...', 4, 2); 按关键字截取字符串 取第一个分隔符之前的所有字符,结果是www SELECT substring_index('www.google.com','...Products.vend_id=Vendors.vend_id AND OrderItems.prod_id=Products.prod_id AND order_num=20007; 自联结 在一条SELECT语句中多次使用相同的表...Excel中数据透视表的功能 数据分组 group by 用于数据分组 having 用于分组后数据的过滤 SELECT order_num,COUNT(*) as items FROM OrderItems
读完本文,你能快速知道: (1)除了select 这种基本的语句,我最应该马上掌握的SQL语句和知识是什么? (2)面试中SQL题80%都在考察的语法是什么? (3)这些语法应该怎么使用?...union的过程中会去重并降低效率,union all 直接追加数据。union 前后是两段select 语句而非结果集。 2....使用count distinct进行去重统计会将reducer数量强制限定为1,而影响效率,因此适合改写为子查询。 想分性别进行统计,看看男女各多少?...—— case when 条件函数 -- 收入区间分组 select id, (case when CAST(salary as float)<50000 Then '0-5万' when CAST(salary...rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样的排序结果; dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样的排序结果。
登陆时间:使用手机的日期。例如2018-05-01。...该业务分析要求查询结果中包括:日期(说明是按每天来汇总数据)、用户活跃数、N日留存数、N日留存率。 1.每天的活跃用户数 先来看活跃用户数这一列如何分析出?...按每天(登陆时间)分组(group by ),统计应用(相机)每天的活跃用户数(计数函数count)。...select *,timestampdiff(day,a.登陆时间,b.登陆时间) as 时间间隔from c; 用case语句选出时间间隔=1的数据,并计数就是次日留存用户数 count(distinct...2.灵活使用case来统计when 函数与group by 进行自定义列联表统计。
以下是关键字 DISTINCT 的语法: SELECT DISTINCT columns_list FROM table_name # 去掉查询返回的记录结果中重复的记录 注意:SELECT 语句不加关键字...有时候,我们需要将结果集按照某个维度进行汇总。这在统计数据的时候经常用到,例如以下的场景: 按班级求取平均成绩; 按学生汇总某个人的总分; 按年或者月份统计销售额; 按国家或者地区统计用户数量。...GROUP BY 子句的分组字段或表达式至少一个,可以多个;③ 子句是可选的,用来过滤分组数据,需要使用逻辑表达式作为条件,其中逻辑表达式中的字段或表达式只能使用分组使用的字段和聚合函数。...举例: 我们以 MySQL 官方示例数据库 Employees 数据库为例,使用 CASE 自定义 ORDER BY 子句对结果集进行排序。...2.5.2、使用 FIELD 函数实现自定义排序 对于上面实例中的 CASE 语句,我们可以如下的使用 FIELD() 代替。
对于上面的数据行,结果为: 图片 解决方案: 1. 使用正则表达式 第一感觉这是使用正则表达式的场景。...总的想法是,首先对评论字符串以“]”为分隔符转多行,然后针对不同情况对每行求字符长度,之后按每条评论ID分组求和,得到符合规则的每条评论的长度,最后按评论长度分组进行二次聚合,得到每种长度的个数。...8-11行中的子查询,得出每条评论中成对中括号的个数(l1列),0表示评论字符串中没有成对的中括号,结果如下: 图片 7-12行中的子查询,结果为使用以“]”为分隔符转的多行: 图片...之后按每条评论ID分组求和,得到符合规则的每条评论的长度,结果如下: 图片 最外层查询按评论长度分组进行二次聚合,得到每种长度的个数。 3....在本例中,不使用正则表达式的解决方案不但冗长,而且由于用到笛卡尔积由单行转多行,之后再聚合,性能比正则表达式差的多。实际表中有55107行记录,方案1秒出结果,方案2需要执行50多秒。
核心是这里的PassedCounts(及格人数)的计算,这里使用了CASE WHEN *** THEN *** ELSE *** END的语句,灵活地对Score进行了判断并赋值(1和0)进行计算。...这里需要注意的一点就是,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。...,可以将语句改为:having COUNT(distinct sc.C#)=2,便可得到以下结果: ? ...,因此我们插入一条:{7,钱二,20,女},再执行上面的SQL语句可得以下结果: ? ...要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列 1 select sc.C#,COUNT(distinct S#) as 'StuCount' from
本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。---熟悉 MySQL 的同学,一定对如何实时监控InnoDB表内部计数器非常了解。...就一条命令:show engine innodb status ;这条命令非常简单,但是其结果的可读性却比较差! 那如何能简化输出,并且增加其结果的可读性呢?...比如我们打印一下 show engine innodb status 的部分结果:InnoDB Buffer Pool 部分(截取片段 BUFFER POOL AND MEMORY),我把频繁关注的几条数据做了简单注释...可以非常方便的编写SQL直接从表innodb_metrics 中查询出结果。...1042*16/1024=16.28MB,同样的方法,写条SQL,得出结果。
: 1、以上五个分组函数都忽略null值且不计入总数, 2、sum和avg一般用于处理数值型 max、min、count可以处理任何数据类型 3、都可以搭配distinct使用,用于统计去重后的结果...【where 筛选条件】 group by 分组的字段 【order by 子句】 */ /* 特点: 1、可以按单个字段分组 2、和分组函数一同查询的字段最好是分组后的字段 3、分组筛选...分组后的结果集 group by的后面 having 4、可以按多个字段分组,字段之间用逗号隔开 5、可以支持排序 6、having后可以支持别名 */ #查询每个工种的最高工资...case when 条件1 then 结果1或语句1(如果是语句,需要加分号) when 条件2 then 结果2或语句2(如果是语句,需要加分号) ......else 结果n或语句n(如果是语句,需要加分号) end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要) 3、 if 结构 if 情况1
领取专属 10元无门槛券
手把手带您无忧上云