sql-server - 每年计算不同的人,但只计算一次
问题描述
我将如何每年选择不同的人,但每个人只计算一次。
我的数据的一个例子是:
ID Date
1 20NOV2018
2 06JUN2017
2 29JUL2011
3 05MAY2014
4 04APR2002
4 25APR2009
我希望我的输出看起来像:
2002 1
2009 0
2011 1
2014 1
2017 0
2018 1
解决方案
使用子选择左加入不同年份,第一年出现 id 并从中计算 id。
data have;
input
id date date9.; format date date9.; datalines;
1 20NOV2018
2 06JUN2017
2 29JUL2011
3 05MAY2014
4 04APR2002
4 25APR2009
run;
proc sql;
create table want as
select each.year, count(first.id) as appeared_count
from
( select distinct year(date) as year
from have
) as each
left join
( select id, min(year(date)) as year
from have group by id
) as first
on each.year = first.year
group by each.year
order by each.year
;
推荐阅读
- python-3.x - 一种在带有元组的列表中查找重复项的有效方法,总结元组的值并删除使用的重复元组
- r - 线性模型的自举残差
- vexflow - 如何在 VexFlow 中渲染配乐?
- node.js - 尽管 zip 文件中有一个有效的包文件,但由于缺少 package.json 节点未能部署
- android - 具有不可序列化对象的可序列化接口
- swift - 没有这样的模块'InputBarAccessoryView'
- google-apps-script - 谷歌脚本表“单元格超出范围”
- android-studio - 带有Android的Website2APK
- python - 如何在 jinja 中显示列表的所有结果?
- swift - 如何禁用 NSTextField 并使其不可编辑?[isEditable 属性不起作用]