首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【数据库设计和SQL语法的基础知识】--注意事项--语句设计--统计类语句

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查询效率。

15510
您找到你想要的搜索结果了吗?
是的
没有找到

图解面试题:如何分析红包领取情况?

人均领取金额=总金额/用户数=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

1.3K20

MySQL(五)汇总和分组数据

()返回最前面的行(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(*),因此不允许使用countdistinct);distinct必须使用列名,不能用于计算或者表达式; select avg...order by的重要性:一般使用group by子句时,应该也给出order by子句,这是保证数据正确性的唯一方法(千万不要依赖group by排序数据)。 4、select子句顺序 ?

4.7K20

【Java 进阶篇】深入理解 SQL 聚合函数

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 关键字来处理唯一值的计算。 当计算百分比和比例时,确保分母不为零,以避免错误。

26140

Mysql查询及高级知识整理(上)

】 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.串行化 脏读:已经更新 但未提交 不可重复读:两次读取结果不一致 幻读:读的同事另一个事务进行了写操作,导致两次查询结果不一致

79240

常用指标如何分析?

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

1.2K10

MySQL数据库对象与应用-MySQL进阶SQL应用单元测验

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)分别表示员工姓名、员工号、薪水,如何查找出薪水第二高的员工的薪水?

1.5K10

mysql 基本操作指南之mysql聚集函数

1.mysql聚集函数 AVG()   返回某列的平均值 COUNT()   返回某列的行数   COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值                                                    ...COUNT(column)对特定列中具体值的行进行计数,忽略NULL值 MAX()   返回某列的最大值 MIN()   返回某列的最小值 SUM()   返回某列值之和 如:select...table; select MAX(price) as price_max from table; select MIN(price) as price_min from table; select SUM...(num) as num from table; 注:对于所有的行都执行计算,指定ALL参数或不给参数(默认为ALL),只包含不同的值,指定DISTINCT参数。...GROUP BY子句时,应该给出ORDER BY子句以保证能够数据正确排序。

8310
领券