如何在MySQL/PHP中统计序列中唯一数值的数量?
解决序列中唯一数值(日期)的统计问题
表格软件(Excel/Google Sheets)方案
若使用Excel 2021及以后版本,或是Google Sheets,最直接的方式是结合
UNIQUE和COUNTA函数:=COUNTA(UNIQUE(A1:A3))把
A1:A3替换成你存放日期的单元格范围即可。这个公式会先提取所有不重复的日期,再统计它们的总数,对应你的例子会返回结果3。若使用无
UNIQUE函数的旧版Excel,可借助COUNTIF搭配数组公式实现:=SUM(1/COUNTIF(A1:A3,A1:A3))输入完成后需按
Ctrl+Shift+Enter触发数组公式。原理是用COUNTIF统计每个日期的出现次数,取倒数后求和,重复日期会被合并为1,最终得到唯一值的数量。
编程(以Python为例)方案
如果是用代码处理日期元组序列,直接将序列转为集合(集合会自动去重),再获取集合长度即可:
dates = [(2001, 2, 23), (2001, 2, 2), (2001, 2, 6)] unique_count = len(set(dates)) print(unique_count) # 输出结果为3
关于COUNT函数的说明
单纯的COUNT函数无法满足需求,它仅统计非空单元格/元素的总数,不会判断内容是否重复。比如你的例子中COUNT刚好返回3,但如果存在重复日期(比如两个(2001,2,23)),COUNT仍会返回3,可实际唯一值数量是2,这时就会出错。必须使用专门处理唯一值的组合函数或方法。
内容的提问来源于stack exchange,提问作者Joel B.
相关产品推荐
相关产品推荐

