首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

SQL去重是用DISTINCT好,还是GROUP BY好?

我们知道DISTINCT可以去掉重复数据,GROUP BY在分组后也会去掉重复数据,那这两个关键字在去掉重复数据时的效率,究竟谁会更高一点?...B.当SalesOrderDetailID取消掉自增长属性后就和普通列一样了。...2.GROUP BY与DISTINCT去掉重复数据的对比 GROUP BY与DISTINCT类似,经常会有一些针对这两个哪个效率高的争议,今天我们就将这两个在不同重复数据量的效率作下对比。...可以看出两条语句对应的执行时间GROUP BY比DISTINCT效率高一点点。...作者对上述语句同时执行多次,针对重复量多的UnitPrice,GROUP BY总的处理效率比DISTINCT高一点点,但是针对重复量低的SalesOrderDetailID,DISTINCT就比GROUP

2.9K20

hive的group by与distinct的区别及性能测试比较

先说结论:能使用group by代替distinc就不要使用distinct,例子: 实际论证 order_snap为订单的快照表 总记录条数763191489,即将近8亿条记录,总大小:108.877GB...,存储的是公司所有的订单信息,表的字段大概有20个,其中订单号是没有重复的,所以在统计总共有多少订单号的时候去重不去重结果都一样,我们来看看: 统计所有的订单有多少条条数,一个count函数就可以搞定的...hours 11 minutes 55 seconds 670 msec OK _c0 763191489 Time taken: 1818.864 seconds, Fetched: 1 row(s) GROUP...BY select count(t.order_no) from (select order_no from order_snap group by order_no) t; Stage-Stage-...-1: Map: 396 Reduce: 1 Cumulative CPU: 7915.67 sec HDFS Read: 119072894175 HDFS Write: 10 SUCCESS # group

1.5K20

group by 和聚合函数

group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配合聚合函数进行相关统计。...结论:  group by语句中select指定的字段必须是“分组依据字段”。 因此,只能这样查询: SELECT name FROM person GROUP BY name; 结果一致: ?...4.添加聚合函数 聚合函数有如下几种: 函数 作用 支持性 sum(列名) 求和 max(列名) 最大值 min(列名) 最小值 avg(列名) 平均值 first(列名) 第一条记录 仅Access...支持 last(列名) 最后一条记录 仅Access支持 count(列名) 统计记录数 注意和count(*)的区别  首先,要明白聚合函数的用法。...having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

2K110

面试官:MySQL 中的 distinctgroup by 哪个效率更高?

先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...接下来,我们先来看一下distinctgroup by的基础使用。...DISTINCTGROUP BY都是可以使用索引进行扫描搜索的。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算

39410

MySQL中的GROUP BY和DISTINCT:去重的效果与用法解析

一、GROUP BY的用法及效果GROUP BY关键字用于将结果集按照一个或多个列进行分组,并对每个组应用聚合函数。...将学生按照城市进行分组,并使用COUNT(*)函数计算每个城市的学生人数。...GROUP BY的效果是将结果集中的行按照指定的列进行分组,并对每个组应用聚合函数。它不会去除重复的行,而是将重复的行分组,并对每个组应用聚合函数。...因此,如果我们在上述示例中的查询中不使用COUNT(*)函数,而是使用其他聚合函数如SUM()、AVG()等,将会得到不同的结果。...三、GROUP BY和DISTINCT对同一字段的去重效果比较尽管GROUP BY和DISTINCT都可以用于去重,但它们的用法和效果是不同的。

1.9K50

listagg within group函数的作用_oracletochar函数

前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!...1.基础用法:LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX),就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来 LISTAGG(...)其实可以把它当作SUM()函数来使用或者理解 (1)示例代码: WITH TEMP AS( SELECT 'CHINA' NATION ,'GUANGZHOU' CITY FROM DUAL...DEPTNO = '20' GROUP BY T .DEPTNO 运行结果: 2.高级用法:over(partition by XXX)。...在不使用Group by语句时候,也可以使用LISTAGG函数: WITH TEMP AS( SELECT 500 POPULATION, 'CHINA' NATION ,'GUANGZHOU' CITY

84710

京东一面:MySQL 中的 distinctgroup by 哪个效率更高?太刁钻了吧!

先说大致的结论(完整结论在文末): 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。...接下来,我们先来看一下distinctgroup by的基础使用。...DISTINCTGROUP BY都是可以使用索引进行扫描搜索的。...因为group by和distinct近乎等价,distinct可以被看做是特殊的group by。 在语义相同,无索引的情况下: distinct效率高于group by。...且由于distinct关键字会对所有字段生效,在进行复合业务处理时,group by的使用灵活性更高,group by能根据分组情况,对数据进行更为复杂的处理,例如通过having对数据进行过滤,或通过聚合函数对数据进行运算

2K30

【MySql】聚合函数&&group by&&OJ题目

本篇主要介绍mysql的聚合函数group by的使用,最后是OJ题目的练习。...聚合函数 MySQL中的聚合函数用于对数据进行计算和统计,常见的聚合函数包括下面列举出来的聚合函数函数 说明 COUNT([DISTINCT] expr) 返回查询到的数据的数量...SUM([DISTINCT] expr) 返回查询到的数据的总和,不是数字没有意义 AVG([DISTINCT] expr) 返回查询到的数据的平均值,不是数字没有意义 MAX([DISTINCT...] expr) 返回查询到的数据的最大值,不是数字没有意义 MIN([DISTINCT] expr) 返回查询到的数据的最小值,不是数字没有意义 对于上面所列举出来的聚合函数,下面我们通过一些案例来进行对聚合函数的运用...distinct select distinct count(distinct math) from exam_result; 统计数学成绩总分 select sum(math) from exam_result

16510

Mysql案例之GROUP_CONCAT函数详解

今天我们介绍一下另一种方法,采用GROUP_CONCAT 函数的方式来解决,只需要对学科完成一次排序即可。...首先我们来看一下GROUP_CONCAT 函数的含义: GROUP_CONCAT函数 在 MySQL 中,GROUP_CONCAT 函数用于将查询结果按指定顺序连接成一个字符串。...以下是 GROUP_CONCAT 函数的基本语法: SELECT GROUP_CONCAT(column_name ORDER BY order_column SEPARATOR ',') FROM...group_column:分组的字段名。 通过这样的语法,我们可以在查询中使用 GROUP_CONCAT 函数来将查询结果按照指定顺序连接成一个字符串。...BY s.id ORDER BY GROUP_CONCAT(c.name ORDER BY c.name) ASC; 执行结果如下: 好了,以上就是GROUP_CONCAT 函数在实战中的一个使用场景总结记录

10800

MySQL中group_concat()函数用法总结

group_concat函数应该是在内部执行了group by语句,这是我的猜测。...(town) FROM `players` 结果得到: group_concat(town) 长沙,北京,长沙,北京 结论:group_concat()函数需要与group by语句在一起使用,才能得到需要的效果...原因可以这样理解:group_concat()得到是属于x组的所有成员(函数里面列参数指定需要显示哪些字段)。x组从哪里来?...如果没有group by进行指定,那么根本不知道group_concat()根据哪个分组进行显示出成员。 所以,像上面没有group by子句的时候,就显示了长沙和北京。...实际中什么时候需要用到这个函数? 假如需要查询的结果是这样:左边显示组名,右边想显示该组别下的所有成员信息。用这个函数,就可以省去很多事情了。

1.4K20

MySQL中group_concat函数用法总结

MySQL中group_concat函数用法总结 一、group_concat函数的功能 将group by产生的同一个分组中的值连接起来,返回一个字符串结果。...group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列。...函数的语法 group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符']) 说明: (1)使用distinct可以排除重复值...参数,则销售部两个同名的员工只显示一个,结果如下: select department,group_concat(distinct emp_name) from emp group by department...; +------------+---------------------------------+ | department | group_concat(distinct emp_name) | +

1.1K20

【Kotlin 协程】协程取消 ② ( CPU 密集型协程任务取消 | 使用 isActive 判定协程状态 | 使用 ensureActive 函数取消协程 | 使用 yield 函数取消协程 )

文章目录 一、CPU 密集型协程任务取消 二、使用 isActive 判定当前 CPU 密集型协程任务是否取消 三、使用 ensureActive 自动处理协程退出 四、使用 yield 函数检查协程状态并处理协程取消操作..., 是无法 直接取消的 ; 此类任务一直在 抢占 CPU 资源 , 使用 cancel 函数 , 无法取消该类型的 协程任务 ; 在进行 CPU 密集计算时 , 中间会有大量的中间数据 , 如果中途取消...cancel() 函数取消协程 , 则抛出 CancellationException 异常 , 取消协程 ; yield() 函数 比 ensureActive 函数 更加复杂 , 该函数还尝试出让线程执行权...* * 这个暂停功能是可以取消的。 * 如果在调用此挂起函数取消或完成当前协程的[Job] * 这个函数正在等待调度,它会以[CancellationException]恢复。...* * **注意**:这个函数总是[检查取消][ensureActive],即使它没有挂起。

1K20
领券