需求 根据聚合在一起的编码转换成聚合在一起的码值 建表语句 create table wangyou1( codeStr string ) row format delimited fields...2、思路是切割字符串使之变成数组、使用炸裂函数行转列、case when 进行字符串转换、聚合函数实现列转行 3、如果字符串是固定的可以使用replace这种进行直接替换 4、这里的实现方式更适合通用型...、不确定的,但是值比较固定 扩展 --今天的扩展部分是使用map替换case when --替换后的效果速度上比实现部分减少了130毫秒,代码行数减少了6行 select str_to_map(...14.648 seconds, Fetched: 4 row(s) 知识点 1、split(字符串,分割符):使用分割符切割字符串,返回一个数组 2、lateral view explode(数组):将数组字段拆分成多行...3、concat_ws(连接符,字符串,字符串):连接多个字符串 4、collect_list(分组键):将分组中的某列聚合成一个数组,数组中元素与分组后的数据保持一致 5、map:将多个排列好的k,
SQL窗口函数概述 指定用于计算聚合和排名的每行“窗口框架”的函数。 窗口函数和聚合函数 在应用WHERE、GROUP by和HAVING子句之后,窗口函数对SELECT查询选择的行进行操作。...窗口函数将一组行中的一个(或多个)字段的值组合在一起,并在结果集中为生成的列中的每一行返回一个值。...虽然窗口函数与聚合函数类似,因为它们将多行结果组合在一起,但它们与聚合函数的不同之处在于,它们本身并不组合行。 窗函数的语法 窗口函数被指定为SELECT查询中的选择项。...例如,PARTITION BY City将共享相同City字段值的所有行分组到同一个窗口中; 窗口函数根据这个分组分配行值。...例如,ORDER BY City根据City字段的值对所有行进行排序,然后Window函数按该顺序为每行赋值。
一、分组查询概述 1.1 什么是分组查询 分组查询是一种 SQL 查询技术,通过使用 GROUP BY 子句,将具有相同值的数据行分组在一起,然后对每个组应用聚合函数(如 COUNT、SUM、AVG等)...FROM: 数据来源的表。 WHERE: (可选)筛选条件,用于过滤要分组的数据。 GROUP BY: 指定分组的列。查询结果将按照这些列中的值进行分组。...,将相同的值放在一起,然后对每个组应用聚合函数,计算汇总值。..., column2); 在这个语法中,ROLLUP 子句指定了要进行多层次分组的列,生成的结果将包含每个列组合的聚合值,以及每个列的总计值。..., column2); 在这个语法中,CUBE 子句指定了要进行多维度分组的列,生成的结果将包含每个列组合的聚合值,以及所有可能的列组合的总计值。
目录 获取查询出来的个数 大于小于 in 在列表里面 contains 包含某一个东西 range 范围 排序 分组 annotate 聚合函数 分组配合聚合函数 aggregate 聚合函数 不等于...annotate 聚合函数 from django.db.models import Count, Min, Max, Sum 分组配合聚合函数 我们想要以某一个字段进行分组,我们一般想到的MySQL...(num=F('num')+1) Q() 用这个函数,实现多个条件的查询,且 或关系的查询 组合搜索的时候,就会使用这个 # 方式一: # Q(nid__gt=10) #...`category_id` FROM `myfirst_article` where 和 params 或者关联的查询条件 shutype = Article.objects.all().extra...) 也就是拼接where后面的条件 以上生成的sql语句是 SELECT `myfirst_article`.
(因为有约束,导致不能随意修改父键与子键) 对于父键必须要被unique或primary key 修饰 CHECK约束 CHECK:用于限制列的值,确保数据符合给定的条件。...,并且可以与聚合函数一起使用。 ...SELECT 列名1, 聚合函数(列名) FROM 表名 WHERE 条件 GROUP BY 列名1; 列名1 是用来分组的列。GROUP BY将结果按照这些列的值进行分组。...聚合函数(列名):用于执行分组后的聚合计算(如COUNT()、SUM()、AVG()等)。 WHERE:过滤数据,通常在GROUP BY之前使用,来限制参与分组的数据。...注意select 指定的列必须是“分组依据列” (指定列中相同的行为一组),其他列若想出现在select 中则必须包含在聚合函数中,否则会出现错误 (假如一组中有3行,该组内部都为不同的值,那该组的列展示出来的就是其中的一个值
MAX、MIN MAX、MIN 分别求最大与最小值,上面不同的时,也可以作用于字符串上,因此可以根据字母判断大小,从大到小依次对应 a-z,但即便能算,也没有实际意义且不好理解,因此不建议对字符串求极值...分组聚合 分组聚合就是 GROUP BY,其实可以把它当作一种高级的条件语句。...多字段组合起来成为唯一 Key,即 GROUP BY a,b 表示 a,b 合在一起描述一个组。...GROUP BY + WHERE WHERE 是根据行进行条件筛选的。因此 GROUP BY + WHERE 并不是在组内做筛选,而是对整体做筛选。...GROUP BY + HAVING HAVING 是根据组进行条件筛选的。
ALL子句与不指定DEFAULT子句相同;如果指定ALL,SELECT将返回表中满足选择条件的所有行。...可以使用子查询实现DISTINCT、聚合函数和GROUP BY的预期组合。 字母大小写与DISTINCT优化 根据为字段定义的排序规则类型,将字符串值不同地分组在一起。...) Name,Home_City FROM Sample.Person /* 将Home_City值按其大写字母值组合在一起将以大写字母返回每个分组城市的名称。...值按其大写字母值组合在一起将返回每个分组的城市的名称(原始字母大小写)。...*/ SELECT DISTINCT BY (%EXACT(Home_City)) Name,Home_City FROM Sample.Person /* 将Home_City值按其原始字母大小写组合在一起将返回每个分组的城市的名称
数据库约束 约束类型 NOT NULL 指示某列不能存储NULL值. UNIQUE 保证某列的每行必须有唯一的值。 数据库如何判定,当前这一条记录是重复的?先查找,再插入。...但是加上约束之后,数据库的执行过程可能就变了。因此执行时间或者效率会受到很大影响。 PRIMARY KEY 约束是可以组合在一起使用的。一列中可以同时加上多个约束。...分组查询,也是可以指定条件的。有两种情况: 分组之前,指定条件。先筛选,再分组。 where 分组之后,指定条件。先分组,再筛选。 having 分组之前和之后,都指定条件。...以上having之后的条件是分组之后才能算出来的的,此时就需要先分组。再条件筛选。 以上属于第三种情况,两者都有。...先计算笛卡尔积 引入连接条件 再根据需求,加入必要的条件。 把不必要的列去掉 联合查询,还有一种写法。
GROUP BY子句接受查询的结果行,并根据一个或多个数据库列将它们分成单独的组。 当将SELECT与GROUP BY结合使用时,将为GROUP BY字段的每个不同值检索一行。...组合字母变体在一起(返回大写字母): 默认情况下,GROUP By根据创建字段时为其指定的排序规则将字符串值分组。...GROUP BY根据字段的大写字母排序规则,使用SQLUPPER排序规则对字段的值进行分组。 只有字母大小写不同的字段值被分组在一起。 分组字段值全部以大写字母返回。...组合字母大小写变体在一起(返回实际的字母大小写): GROUP BY可以将字母大小写不同的值分组在一起,并使用实际的字段字母大小写值返回分组的字段值(随机选择)。...Sample.Person GROUP BY Home_City /* 将Home_City值按其大写字母值组合在一起将以大写字母返回每个分组城市的名称。
条 all(): 查询所有结果 get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个... filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values...聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。...键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。...9.90')}]> F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较
get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。... exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet...换句话说,在关联的任何一端,都不需要再调用save()方法。 聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。...键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。...sum_price': Decimal('29.80')}, {'name': '小魔女', 'sum_price': Decimal('9.90')}]> F查询和Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较
聚合查询 1 聚合函数 主要对于行与行之间的操作 聚合函数的作用是对一组数据进行计算,通常返回一个单一的结果。它们常用于数据汇总、统计和分析。...查询每个岗位的人数 按照role进行分组 ,再根据分组的结果使用count聚合函数统计它的人数即可 统计每个岗位的平均工资 查询每个角色的人数和最高工资、最低工资和平均工资 HAVING HAVING...与 WHERE 不同,HAVING 是在对数据进行分组(GROUP BY)之后进行过滤的,而 WHERE 是在分组之前对数据进行过滤的。 ...笛卡尔积(CROSS JOIN):将两个表中的每一行与另一表的每一行进行组合,生成结果集的行数是两个表行数的乘积,通常会产生非常大的结果集。...将最终结果合并在一起,整体过程与执行多个sql操作类似; 查询id小于3,或者名字为“英文”的课程: select * from course where id < 3 union select * from
组合数据:将多个表的数据合并在一起,以获得更复杂的结果。 计算数据:对结果进行计算,例如求和、平均值等。 SQL查询通常以SELECT语句开始,然后使用其他子句来进一步指定操作。...过滤数据 - 使用WHERE子句 WHERE子句用于指定检索数据的条件。它筛选出满足条件的行。...组合数据 - 使用JOIN子句 JOIN子句用于将来自不同表的数据组合在一起。它通常在多个表之间共享关联列时使用。...计算数据 - 使用聚合函数 聚合函数允许您对数据进行计算,如求和、平均值、最大值和最小值等。以下是一些常见的聚合函数: COUNT():计算行数。 SUM():计算列的总和。...以下是一些进阶的DQL查询主题: 1. 分组和聚合:使用GROUP BY子句对数据进行分组,并使用聚合函数对每个组的数据进行计算。
COUNT 函数是 SQL 中常用的聚合函数之一,用于快速计算行数。在数据统计和分析中具有广泛应用,通过不同的参数和条件组合,可以灵活地满足各种统计需求。...注意事项 MIN 函数通常与 GROUP BY 子句结合使用,用于对不同组的数据计算最小值。 结果是一个数值,表示满足条件的列值的最小值。 MIN 函数是 SQL 中用于计算最小值的关键聚合函数。...注意事项 MAX 函数通常与 GROUP BY 子句结合使用,用于对不同组的数据计算最大值。 结果是一个数值,表示满足条件的列值的最大值。 MAX 函数是 SQL 中用于计算最大值的关键聚合函数。...四、高级聚合函数 4.1 GROUP_CONCAT GROUP_CONCAT 是一种聚合函数,用于将每个分组中的字符串值合并为一个字符串,并可选地使用分隔符分隔各个值。...它通常与 OVER 子句结合使用,提供了按指定顺序为每行分配序号的功能。
2.查询搭配插入 SQL执行语句:insert into 表名1 select * from 表名2 当然这里的意思是将表2的所有值插入到表1当中去; 代码如下: mysql> insert into...,最小值;这里的类型要求都为数字类型,不要搞错了,否则这里的函数就没有意义了; 3.2GROUP BY子句 这里的group by代表的是分组查询,一般来搭配聚合查询函数来使用; SQL执行语句:select...,通过分组查询,会将指定的分组列进行分组,让后通过聚合函数将对应的角色的薪水求平均值; 注意: 若直接求平均值,由于老板的薪水很高,会造成很大误差,分完组后,就不会产生误差; 若指定了分组的列,那么在进行查找时也应该写进去...,方便阅读; 分组查询也可以搭配where条件函数,只不过要分清条件在分组之前还是分组之后,若条件在 分组之前那么就可以使用where 3.3having条件函数 SQL执行语句:select...by来进行分组,和聚合函数来完成特殊的需求。
):与上卷相反的操作,基于下钻将数据分割为更小的部分。...: city, car_model:根据城市city和车型car_model 分组聚合,计算每个城市和每个车型组合的总销量; city:根据城市city分组聚合,计算每个城市的总销量; car_model...:根据车型car_model 分组聚合,计算每个车型的总销量; 空集合:不进行任何分组,聚合计算所有总销量。...: city, car_model:根据城市city和车型car_model 分组聚合,计算每个城市和每个车型组合的总销量; city:根据城市city分组聚合,计算每个城市的总销量; 空集合:不进行任何分组...CUBE CUBE与ROLLUP思想类似,都是对GROUP BY子句的多组合上卷展开,但CUBE会遍历每一种可能的维度组合,如GroupBy N个字段,则产生的分组数量为 2^N 个。
一般操作 专业官网文档 必会13条查询 all(): 查询所有结果 filter(**kwargs): 它包含了与所给筛选条件相匹配的对象... get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。...换句话说,在关联的任何一端,都不需要再调用save()方法。 聚合/分组及 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。...键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。...sum_price': Decimal('29.80')}, {'name': '小魔女', 'sum_price': Decimal('9.90')}]> F查询/Q查询 F查询 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较
pandas 的核心是名叫DataFrame的对象类型- 本质上是一个值表,每行和每列都有一个标签。...最简单的方法是删除缺少值的行:fillna()另一种方法是使用(例如,使用 0)填充缺失值。1.5 分组使用特定条件对行进行分组并聚合其数据时。...例如,按流派对数据集进行分组,看看每种流派有多少听众和剧目:Pandas 将两个“爵士乐”行组合为一行,由于使用了sum()聚合,因此它将两位爵士乐艺术家的听众和演奏加在一起,并在合并的爵士乐列中显示总和...聚合是也是统计的基本工具之一。除了 sum(),pandas 还提供了多种聚合函数,包括mean()计算平均值、min()、max()和多个其他函数。...通过告诉 Pandas 将一列除以另一列,它识别到我们想要做的就是分别划分各个值(即每行的“Plays”值除以该行的“Listeners”值)。
各分组排序函数的差异 我们将 rank() dense_rank() row_number() 的结果都打印出来: SELECT *, rank() over (PARTITION BY city ORDER...,按照 people 排序后进行了 累加(相同的值会合并在一起),这就是 BI 工具一般说的 RUNNGIN_SUM 的实现思路,当然一般我们排序规则使用绝对不会重复的日期,所以不会遇到第一个红框中合并计算的问题...为了验证猜想,我们试试 avg() 的结果: 可见,如果直接利用上一行结果的缓存,那么 avg 结果必然是不准确的,所以窗口累计聚合是每行重新计算的。...当然也不排除对于 sum、max、min 做额外性能优化的可能性,但 avg 只能每行重头计算。...与 GROUP BY 组合使用 窗口函数是可以与 GROUP BY 组合使用的,遵循的规则是,窗口范围对后面的查询结果生效,所以其实并不关心是否进行了 GROUP BY。
领取专属 10元无门槛券
手把手带您无忧上云