例如: SELECT if(order_status>=1,sum(amount),0) as pay_amount,count(if(order_status>=1,true,null)) as...(if(order_status>=1,true,null)) as pay_num count函数返回一个布尔值类型的数值, 有意思的是第三个参数如果不是null的话,是0,那么根据if条件count...出的结果是有计数的,也就是当你的条件中实际count应为0的,此时返回的结果是有计数的,是不正确的。...所以要注意count时,第三个参数需为null才能返回正确的值。...然而, sum函数返回一个值类型的数值,sum此时if中第三个参数为0则无数据时返回0,为null无数据时则会返回null。
count(1): InnoDB引擎遍历整张表,不取值,但对于每一行返回填充数字1,实际按行累加。...count(distinct col): 计算该列除null之外的不重复数量,例如,count(distinct col1, col2)。...sum()的用法: sum(col): 当某一列的值全为null时,count(col)返回结果为0,而sum(col)返回结果为null,需注意空指针异常(NPE)问题。...例如:select point, count(id) from t_table group by point,point列未使用聚合函数,必须在group by子句中出现。...在统计类语句中,count()有多用法,推荐优先使用count(*)。sum()需注意空指针异常。group by与order by联合使用时,遵循列出现规则。这些注意事项有助于提高SQL查询效率。
DISTINCT - 可选- DISTINCT子句,指定统计方差函数返回不同(唯一)表达式值的方差。...方差计算为: (SUM(expression**2) * COUNT(expression)) - SUM(expression**2) ________________________________...VAR_POP的计算是: (SUM(expression**2) * COUNT(expression)) - (SUM(expression) **2) _______________________...方差(DISTINCT col1)返回那些不同(唯一)的col1字段值的方差。...当前事务期间所做的更改 与所有聚合函数一样,方差函数总是返回数据的当前状态,包括未提交的更改,而不管当前事务的隔离级别如何。
人均领取金额=总金额/用户数=sum(金额)/count(distinct 用户ID) 人均领取次数=领取次数(也就是有多少行数据) =count(*)/count(distinct 用户ID) (... end) as 新用户数,count(distinct case when a.新老用户标识='老用户' then 用户ID else null end) as 老用户数,count(distinct... case when a.新老用户标识='未登录用户' then 用户ID else null end) as 未登录用户,sum(a.金额)/count(distinct a.用户ID) as 人均领取金额...人均领取金额=总金额/去重的用户数=sum(金额)/count(distinct 用户ID) 人均领取次数=领取次数(也就是有多少行数据) =count(*)/count(distinct 用户ID) ...select month(抢红包日期) as 月份,count(distinct 抢红包日期) as 领取天数,count(distinct 用户ID) as 每个月领取红包的用户数,sum(金额)/count
注意前缀,我加了一个学校的,那么按学校分组也是刚刚好,注意一点就是学生总数需要去重,题目总数不必去重 select university, count(question_id) / count(distinct...用户总数需要去重 select university,difficult_level, count(answer_cnt) / count(DISTINCT u.device_id) as avg_answer_cnt...(qpd.question_id) / count(distinct qpd.device_id) avg_answer_cnt from user_profile u join question_practice_detail...,接下来就是绑定浙江大学 SELECT difficult_level,sum(if(result = 'right', 1, 0)) / count(*) as correct_rate FROM question_detail...拆完之后,绑定浙江大学就十分的轻松了 题目:21年8月份练题总数 select count(DISTINCT device_id),count(question_id) from question_practice_detail
()返回最前面的行(min()函数忽略列值为null的行) 5、sum()函数 sum()函数用来返回指定列值的和(总计);例子如下: select sum(quantity) as items_ordered...from orderitems where order_num = 20005; 函数sum()返回orderitems中所有quantity列的值之和,where子句保证只统计某个指定列的数值; PS...:利用标准的算数操作符,所有聚集函数都可用来执行多个列上的计算(sum()函数忽略列值为null的行) 6、distinct与聚集函数 MySQL5.0.3以及之后的版本,聚集函数和distinct可以搭配使用...则distinct只能用于count();distinct不能用于count(*),因此不允许使用count(distinct);distinct必须使用列名,不能用于计算或者表达式; select avg...order by的重要性:一般使用group by子句时,应该也给出order by子句,这是保证数据正确性的唯一方法(千万不要依赖group by排序数据)。 4、select子句顺序 ?
PawSQL对使用Natural Join的语句进行了风险提示,以避免其引发的正确性问题。...避免COUNT DISTINCT多个可空列 当你使用COUNT (DISTINCT) 进行多列的计算时,它的计算结果可能和你预想的不同。...COUNT (DISTINCT col) 计算该列除 NULL 之外的不重复行数,而COUNT (DISTINCT col, col2)则会排除掉任何一列为NULL的行。...譬如对于如下的查询,对列a和列组合(a,b)的统计不同值的个数, select count(distinct t.a) as a_cnt, count(distinct t.a,t.b)...NPE问题重写 SQL的NPE(Null Pointer Exception)问题是指在SQL查询中,当聚合列全为NULL时,SUM、AVG等聚合函数会返回NULL,这可能会导致后续的程序出现空指针异常
AS pages_old, ROUND(SUM(ibp.number_records)/COUNT(DISTINCT ibp.index_name)) AS rows_cached FROM information_schema.innodb_buffer_page..., SUM(ibp.data_size) AS data, COUNT(ibp.page_number) AS pages, COUNT(IF(ibp.is_hashed = 'YES',...AS pages_old, ROUND(SUM(ibp.number_records)/COUNT(DISTINCT ibp.index_name)) AS rows_cached FROM information_schema.innodb_buffer_page..., SUM(ibp.data_size) AS data, COUNT(ibp.page_number) AS pages, COUNT(IF(ibp.is_hashed = 'YES',...内存释放次数COUNT_FREE) current_allocated:当前已分配的且未释放的内存字节数 current_avg_alloc:当前已分配的且未释放的内存块对应的平均每次内存分配的内存字节数
1、COUNT合计函数: 返回查询记录(行)数。 格式:COUNT([ALL|DISTINCT] [表达式|*]) 参数说明: ALL:默认值,指对查询所有记录统计总数。...2、SUM 求和函数: 计算表中数值列的数据合计值。 格式:SUM([ALL|DISTINCT] 表达式) ALL:默认值,指对查询所有记录求和。 DISTINCT:指对查询记录去重后求和。...用法: SELECT SUM(score) FROM T_ScoreSELECT SUM(DISTINCT score) FROM T_ScoreSELECT SUM(1+99) 3、AVG 求平均值函数...: 返回数据列表中的平均值,NULL被忽略。...COUNT类似,唯一的区别在于COUNT_BIG返回的值类型为bigint,COUNT返回的值类型为int。
SQL 中的常见聚合函数包括 COUNT()、SUM()、AVG()、MAX() 和 MIN(),它们可用于不同类型的数据操作。...例如,以下是一个使用 COUNT() 函数的查询示例: SELECT COUNT(*) FROM orders; 这将返回 orders 表中的总行数。...例如,以下是一个使用 SUM() 函数的查询示例: SELECT SUM(price) FROM products; 这将返回 products 表中 price 列的总和。...以下是一个示例: SELECT COUNT(DISTINCT department) FROM employees; 在上述查询中,我们计算了不同部门的数量,而不考虑重复的部门。...嵌套聚合函数时,确保计算的顺序和逻辑正确。 考虑使用 DISTINCT 关键字来处理唯一值的计算。 当计算百分比和比例时,确保分母不为零,以避免错误。
Flink SQL可以指定空闲状态(即未更新的状态)被保留的最小时间 当状态中某个 key对应的 状态未更新的时间达到阈值时, 该条状态被自动清理。...开启Split Distinct LocalGlobal优化针对普通聚合(例如 SUM 、 COUNT 、 MAX 、 MIN 和 AVG )有较好的效果。...对于 DISTINCT 的聚合(如 COUNT DISTINCT 收效不明显,因为 COUNT DISTINCT 在 Local 聚合时,对于 DISTINCT KEY 的去重率不高,导致在 Global...Distinct举例 SELECT a,COUNT(DISTINCT b) FROM T GROUP BY a 使用SQL语句手动打散: SELECT a,SUM(cnt) FROM (...SELECT a, COUNT(DISTINCT b ) AS total_ b, COUNT(DISTINCT CASE WHEN c IN ('A', 'B') THEN b ELSE
Flink SQL可以指定空闲状态(即未更新的状态)被保留的最小时间 当状态中某个 key对应的 状态未更新的时间达到阈值时,该条状态被自动清理。...开启Split DistinctLocalGlobal优化针对普通聚合(例如 SUM 、 COUNT 、 MAX 、 MIN 和 AVG )有较好的效果。...对于 DISTINCT 的聚合(如COUNT DISTINCT 收效不明显,因为 COUNT DISTINCT 在 Local 聚合时,对于 DISTINCT KEY 的去重率不高,导致在Global...图片Distinct举例SELECT a,COUNT(DISTINCT b)FROM TGROUP BY a使用SQL语句手动打散:SELECT a,SUM(cnt)FROM ( SELECT...SELECT a, COUNT(DISTINCT b ) AS total_ b, COUNT(DISTINCT CASE WHEN c IN ('A', 'B') THEN b ELSE NULL
】 expr) 返回expr的平均值 l COUNT(【DISTINCT】 expr)返回expr的非NULL值的数目 l MIN(【DISTINCT】 expr)返回expr的最小值 l MAX(【DISTINCT...】 expr)返回expr的最大值 l SUM(【DISTINCT】 expr)返回expr的总和 特别注意: Group By 语句 在SELECT 列表中所有未包含在组函数中的列都应该是包含在...会提示name字段不在Group By 中;但要注意生产数据库不一定设置此项,默认为Null; 正确SQL: 分析:先找出表中最大年龄,作为临时表,再联查 SELECT *FROM mytbl2 m...这个小点容易被忽视,如果第一行显示为li4,会错认为查询结果正确,导致不可估量的后果。 Mysql执行顺序 ? 在第一次查询后,会将结果缓存至本地缓存,两次查询结果时间不一致。...隔离级别 1.读未提交 2.读已提交(Mysql默认级别) 3.可重复读 4.串行化 脏读:已经更新 但未提交 不可重复读:两次读取结果不一致 幻读:读的同事另一个事务进行了写操作,导致两次查询结果不一致
SQL Aggregate Functions SQL聚合函数 Syntax: 句法: aggregate_function (DISTINCT | ALL expression) DISTINCT...SQL AVG()函数从表的相应列返回所有选定值的平均值 。...SQL SUM()函数从表的相应列返回所有选定值的总和 。...SQL COUNT() function) 示例 1: COUNT()函数返回表中特定列的计数 (Example 1: COUNT() function to return the count of...此函数返回表的记录集中存在的所有值的计数。
select count(distinct 顾客ID) as 购买人数 from 销售订单表; 2.销售金额 销售金额=销售数量 * 零售价 select sum(销售数量*零售价)as 销售金额...)/count(distinct 顾客ID) as 客单价 完整SQL如下: select count(distinct 顾客ID) as 购买人数, sum(销售数量*零售价)as 销售金额..., sum(销售数量*零售价)/count(distinct 顾客ID) as 客单价 from 销售订单表; 与客单价经常混淆的还有笔单价(平均每笔交易的购买金额), 笔单价=总销售金额/订单总数...4.客单件 客单件是平均每个用户购买的件数,客单件=总销售数量/用户总数 sum(销售数量)/count(distinct 顾客ID) as 客单件 5.人均购买频次 人均购买频次是平均每个顾客购买几次...购买人数, sum(销售数量*零售价)as 销售金额, sum(销售数量*零售价)/count(distinct 顾客ID) as 客单价, sum(销售数量)/count(distinct
2.distinct 数据丢失 当使用 count(distinct col1, col2) 查询时,如果其中一列为 NULL,那么即使另一列有不同的值,那么查询的结果也会将数据丢失,如下 SQL 所示...: select count(distinct name,mobile) from person; 查询执行结果如下: ?...4.导致空指针异常 如果某列存在 NULL 值时,可能会导致 sum(column) 的返回结果为 NULL 而非 0,如果 sum 查询的结果为 NULL 就可以能会导致程序执行时空指针异常(NPE)...正确用法 1: select * from person where name is not null; 执行结果如下: ?...正确用法 2: select * from person where !isnull(name); 执行结果如下: ?
set 一.分组函数 1.常用分组函数 AVG([DISTINCT|ALL]n) -- 求平均值,忽略空值 COUNT({*|[DISTINCT|ALL]expr...MIN([DISTINCT|ALL]expr) -- 求最小值,忽略空值 SUM([DISTINCT|ALL]n) -- 求和,忽略空值 注...() coung(*)包含空值、重复值,count(expr)过滤空值,count(distinct expr)既过滤空值,也过滤重复值 (1) count(1)/count(2)/count(*)表示将表中的每条记录用...) from employees; (2) avg = sum / count select avg(commission_pct),sum(commission_pct)/count(commission_pct...答案是可以使用Grouping 函数; 没有被Grouping到返回1,否则返回0.
排序函数 ROW_NUMBER() -- 返回唯一的序号 RANK() -- 返回排名(相同值排名相同,但会占用名次) DENSE_RANK() -- 返回排名(相同值排名相同...(DISTINCT session_id) as daily_sessions, COUNT(*) as daily_events FROM user_events GROUP...用户分群分析 WITH user_metrics AS ( SELECT user_id, COUNT(DISTINCT DATE(event_time)) as...active_days, COUNT(DISTINCT session_id) as total_sessions, COUNT(*) as total_events...错误:未正确处理重复值 -- 可能导致问题的查询 SELECT sale_date, amount, FIRST_VALUE(amount) OVER ( ORDER
2、(单选)以下关于distinct的描述,正确的是: A.distinct的作用是分组 B.distinct的查询结果一定是从小到大排序的 C.distinct可以和函数结合使用,如count(distinct...6、(单选)下列关于触发器的说法,正确的是: A.table表上有一个insert相关的触发器,即使 insert into table执行失败了,触发器仍然会触发执行。...D.ORDER BY 解析: A、总成绩,需要sum;根据学生分组,需要group by;最高的,需要order by select 学生id,sum(成绩) from table group by... 学生id order by sum(成绩) desc limit K 8、(单选)下面这个语句有什么问题?...D.上面所有都不正确。 9、(单选)有表tab(name varchar(20), id int, sal int)分别表示员工姓名、员工号、薪水,如何查找出薪水第二高的员工的薪水?
领取专属 10元无门槛券
手把手带您无忧上云