首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle分析函数、多维函数简单应用

    ,可以看出NULL值情况下的COUNT是存在问题的,所以建议数据库系统中最好不要使用NULL值列 SELECT COUNT(*), COUNT(a.SalesNumber), COUNT(DISTINCT...(*), COUNT(a.SalesNumber), COUNT(DISTINCT a.SalesNumber), SUM(a.SalesNumber), AVG(a.SalesNumber...ORDER BY SalesDate) "REGR_COUNT" FROM ComputerSales --关于按日期进行环比的问题 --同比则有麻烦,因为日期天数是不固定的 --从ComputerSales...,否则到最后连自己都搞糊涂了 --GROUP BY,ROLLUP,CUBE能组合使用,但SELECT中的分组字段必须出现在GROUP BY的相关栏位 --MODEL:MODEL语句的关键字,必须。...)[CV(),CV(),SALESDATE BETWEEN CV(SALESDATE)-30 AND CV(SALESDATE)-30] ) ORDER BY 1,2,3 关于按年月环比统计中可能出现的问题

    1.2K30

    spark sql多维分析优化——细节是魔鬼

    然而,又要对 7个维度做成22个组合,分别求 count(distinct request_id) , count(distinct deviceid), count(distinct case when...只能说,需求好无耻啊 啊 啊 啊 2、spark sql对count distinct做的优化 在 hive 中我们对count distinct 的优化往往是这样的: --优化前 select count...在使用spark sql 时,貌似不用担心这个问题,因为 spark 对count distinct 做了优化: explain select count(distinct id),...expand 的方式 4、优化过程 4.1 定位问题 了解了count distinct 和 grouping sets 的原理,已经基本能知道哪里慢了,还是来看一下执行计划: == Physical...count(distinct case when bid_response_nbr=10001 then bid_response_id else null end)、count(distinct case

    4.7K70

    一个分组查询引发的思考

    一个分组查询引发的思考 我们在看项目代码或者SQL语句时, 往往会看到很多非常复杂的业务或者SQL 那么问题来了. 复杂SQL是如何写成的?...我们可以看到汇总的那一行为空值 select DATE_FORMAT(takeTime,'%Y-%m') as '时间', round((sum(waitingTime)/count(case when...(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY -- c.根据b后面出现的问题进行解决, 执行第一条指令(当前shell生效), 然后再执行...b中出现问题的语句, 图3. -- 可以看到虽然执行没问题, 但是返回结果却没有根据ifnull将 takeTime 为null时的字段改成 我们想要定制的字段: 总计 -- 分组异常时执行下面命令...动态查询列信息核心逻辑: 在原来的基础上, 首先新增一个获取所有业务列的接口, 然后在当前查询Dao接口传入这个list. mapper.xml 中 通过使用 mybaties的

    1.2K20

    MySQL常用函数完全指南:提升你的数据处理效率

    本文将系统性地介绍MySQL中各类常用函数,并通过实际示例帮助你快速上手。 一、字符串处理函数 字符串函数是日常开发中最常用的函数类别,主要用于文本数据的处理和转换。 1....-- 基本聚合函数 SELECT COUNT(*) AS total_rows, -- 行数统计 COUNT(DISTINCT user_id) AS unique_users, --...; 五、条件判断函数 条件函数用于实现类似程序中的if-else逻辑,让SQL查询更加灵活。..., '%Y-%m') AS month, COUNT(DISTINCT o.customer_id) AS customer_count, COUNT(o.order_id) AS order_count...:将数据处理下推到数据库层 提高查询效率:减少不必要的数据传输 保证数据一致性:统一的数据处理规则 简化复杂操作:用一条SQL完成复杂的数据转换 掌握这些函数的关键在于理解其适用场景,避免滥用导致的性能问题

    24310

    使用group by rollup和group by cube后的辅助函数

    by rollup和group by cube后的结果集)中的空值。...通过GROUPING(字段名)的这个特点,在结果case when then else end函数,就可以将null值修改为任何字段名类型的值了,代码如下: select case GROUPING(orderid...、Group by  Grouping sets解决的问题: 更加灵活的处理一些报表的统计工作,因为使用group by rollup 和group by cube都是固定格式的统计报表模式,当你给定三个需要分组统计的字段...3、GROUP BY ,CUBE 或ROLLUP 中同时使用一列的处理 i、问题:在日常开发中可能会存在GROUP BY 或者GROUP BY CUBE 或者GROUP BY ROLLUP或者它们中组合使用到同一列的情况...出现了红框内的情况 ii、解决方案: a、第一步:使用GROUP_ID()函数,这个函数的作用检索出每一个数据行在表中重复出现的次数,当然这个函数只在有GROUP BY或者GROUP BY ROLLUP

    2.5K70

    教育行业案例:如何分析​复购用户?

    select 购买时间, count(distinct 用户id) as 当日首次购买用户数 from 课程订单表 group by 购买时间; 查询结果如下: 2.此月复购用户数 再来看查询结果中的此月复购用户数...语句选出时间间隔的数据,并计数就是此月复购用户数 count(distinct case when 时间间隔<=1 then 用户id else null...end) as 此月复购用户数 代入上面的sql就是: select a.购买时间, count(distinct case when timestampdiff(month...最终sql代码如下: select a.购买时间, count(distinct a.用户id) 当日首次购买用户数, count(distinct case when timestampdiff(month...2.灵活使用case来统计when 函数与group by 进行自定义列联表统计。 3.遇到只有一个表,但是需要计数时间间隔的问题,就要想到用自联结来求时间间隔。

    1.4K10

    快出来,收快递啦

    image.png 所以,还要在上一步的基础上(作为子查询)获取不同客户所处的单量区间。不同区间这种问题怎么办呢? 要想到《猴子 从零学会SQL》里讲过的多条件判断,也就是用到case语句。...image.png 在上一步查询结果的基础上(作为子查询),再使用一次汇总分析,按“单量区间”分组(group by),对客户id汇总得到客户数(count)。...1 select 单量区间 as 单量, 2 count(distinct 客户id) as 客户数 3 from 4 ( 5 select 客户id 6 ,单量 7 ,case when...count()、group by()、distinct、case when,以及它们的组合使用 4.当遇到“区间”问题的时候,要想到用多条件判断(case语句)解决 5.考察遇到业务问题,如何用逻辑树分析方法把复杂问题变成矿业解决的子问题...(distinct 客户id) as 客户数 7 from 8 ( 9 select 客户id 10 ,单量 11 ,case when 单量 <= 5 then ‘0-5’ 12 when

    98000

    MS SQL Server 实战 统计与汇总重复记录

    需求 在日常的数据管理应用中,统计和汇总重复记录的情况是经常遇到的一个问题,然后我们会根据统计结果进一步对数据进行合理化处理。...分组统计 SQL 语句 首先通过 group by 按试题类型和题目进行分组统计,并使用 count、min、max 聚合函数统计题目重复的个数,出现的最小排序号和最大排序号,代码如下: SELECT...ROLLUP having count(title)>1 在查询分析器运行SQL语句,显示如下图: 如图可以看出,统计汇总结果清晰的反映出了重复记录的情况,即 count(title)>1 的...小结 我们可以继续完善对结果的分析,以标注汇总行的提示信息,可通过如下语句实现: SELECT case when title is null then isnull(etype,'总数')+'统计情况...group by etype,Title with ROLLUP having count(title)>1 运行查询分析器,结果显示如下: 主要是通过 case when 语句对 title

    82410

    HiveCube在有赞的实践

    创建Cube的工具有很多,本文重点介绍在多维汇总场景下,由传统开发模式替换为HiveCube开发模式过程中碰到的问题以及处理经验,主要包括以下方面的内容: 背景 理论 实践 二、背景 在今年上半年,我们接到公司一个项目...具体使用方式见代码: -- with rollup语法 -- select dim1, dim2, count(*) from t1 group by dim1, dim2 with...rollup; -- 常规语法 -- select dim1, dim2, count(*) from t1 group...四、实践 该部分内容重点介绍HiveCube在生产环境使用过程中碰到的问题以及处理经验 4.1 代码实现grouping__id 因为grouping__id的实现算法在Hive与Spark可能存在差异...concat_ws ( ':' , case when dim1 is not null then 'dim1' else null end , case

    1.1K30

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

    当出现“每天”要想到《猴子 从零学会sql》里讲过的分组汇总来解决这样的问题。 用“日期”来分组(group by),用count(用户ID)来汇总登录用户。...涉及到多条件判断的问题,要想到用case语句来实现: case when 新用户=1 then 新用户     when 新用户=0 then 老用户     else 未登录用户end 把两表联结的sql...3)将上述两个步骤的sql合并到一起,就是最终sql select a.抢红包日期,count(distinct case when a.新老用户标识='新用户' then 用户ID else null... end) as 新用户数,count(distinct case when a.新老用户标识='老用户' then 用户ID else null end) as 老用户数,count(distinct...(distinct 用户ID), as 人均领取金额,count(*)/count(distinct 用户ID) as 人均领取次数from 领取红包表group by month(抢红包日期); 查询结果如下

    1.8K20

    5分钟搞懂MySQL - 行转列

    '数学', SUM(CASE `subject` WHEN '英语' THEN score ELSE END) as '英语', SUM(CASE `subject` WHEN '特长加分...=only_full_group_by相关错误,需要聚合函数和group by连用或使用distinct才可以解决。   ...其实,加了SUM()是为了能够使用GROUP BY根据student_name进行分组,每一个student_name对应的subject="语文"的记录毕竟只有一条,所以SUM() 的值就等于对应那一条记录的...友情提示:我们工作中处理行转列数据时,尽量都把总数、平均数等加上,方便领导查阅,省得他循环BB你。...这里我们就需要case when嵌套一下了,看着高大上,其实就是普通的嵌套而已。在第一层查出分组后的各科分数,在第二层替换成等级即可。

    1.8K20
    领券