sql - 无法对 SQL 语句进行分组和计算返回率
问题描述
这是我当前的表:
first_date any_date id
2018-12-01 2018-12-01 1234
2018-12-01 2018-12-01 1234
2018-12-01 2018-12-02 1234
2018-12-01 2018-12-01 2434
2018-12-02 2018-12-02 1111
到目前为止,我对 MS SQL Server 2017 的查询如下所示:
select
min(any_date) over (PARTITION by id) AS first_time,
any_date,
id
from sales
但是,我想汇总并添加一个返回率计算,该计算引用每个唯一的 first_date 和每个 any_date 组合。我怎么得到这个?
first_date any_date count id return_rate
2018-12-01 2018-12-01 2 100% (because this is the cohort start)
2018-12-01 2018-12-02 1 50%
2018-12-02 2018-12-02 1 100%
解决方案
first_date
您可以通过and聚合any_date
,然后使用窗口函数first_value()
提取队列第一天的不同 id 的计数:
select
t.*,
1 .0 * count_id
/ first_value(count_id) over(partition by first_date order by any_date) return_rate
from (
select first_date, any_date, count(distinct id) count_id
from sales
group by first_date, any_date
) t
第一日期 | 任何日期 | count_id | 回报率 :----------------- | :----------------- | --------: | :------------- 2018 年 1 月 12 日 00:00:00 | 2018 年 1 月 12 日 00:00:00 | 2 | 1.000000000000 2018 年 1 月 12 日 00:00:00 | 2018 年 2 月 12 日 00:00:00 | 1 | 0.500000000000 2018 年 2 月 12 日 00:00:00 | 2018 年 2 月 12 日 00:00:00 | 1 | 1.000000000000
推荐阅读
- css - 我使用的 CMS 以十六进制值定义颜色变量。有没有办法使用 CSS 将该变量值转换为该颜色的较浅色调?
- google-apps-script - 谷歌应用脚本重命名下载的文件
- jquery - 我无法隐藏通过 DOM 操作创建的 div
- java - Spring Data JPA 切片底层 SQL
- php - 无法读取目录中的文件
- javascript - Angular - 如何在使用 ViewEncapsulation.Native 时访问 html 元素
- velocity - 除以数字但保留小数?
- r - 根据指定加权函数的时间加权平均值的矢量化方法
- swift - 如何防止 willDisplay cell: 在我重新加载 UICollectionView 的数据时被调用?
- python-3.x - 泡菜弄乱了文本