You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数据库按条件统计各国停留总天数?

问题描述

给定如下数据库表格结构及数据:

DATEAMOUNTCOUNTRYCITY
12/02/202323.9BRASILRIO DE JANEIRO
13/02/20233.9BRASILRIO DE JANEIRO
14/02/20232.9BRASILSAO PAULO
15/02/202310.0BRASILCURITIBA
16/02/202371.3BRASILCURITIBA
17/02/202322.2PARAGUAYASUNCION

需要统计每个国家的停留天数,例如巴西的停留天数为3(推测此处指不同城市的停留天数,以下提供多种常见场景的公式解决方案)。尝试过QUERY、DATEDIFF等函数但未解决,希望通过公式实现,不使用手动筛选功能。

解决方案

场景1:统计每个国家的唯一日期数量(实际停留天数,重复日期算1天)

使用QUERY函数分组统计唯一日期:

=QUERY(A:D, "SELECT C, COUNT(DISTINCT A) WHERE C <> '' GROUP BY C LABEL COUNT(DISTINCT A) '停留天数'", 1)
  • A:D为数据所在列范围
  • COUNT(DISTINCT A)统计每个国家对应的不重复日期数
  • GROUP BY C按国家分组聚合结果

场景2:统计每个国家首次到末次停留的间隔天数(含首尾当天)

结合MINIFS、MAXIFS和DATEDIFF实现:

=ARRAYFORMULA(QUERY({C:C, DATEDIFF(MINIFS(A:A, C:C, C:C), MAXIFS(A:A, C:C, C:C), "D")+1}, "SELECT Col1, MAX(Col2) WHERE Col1 <> '' GROUP BY Col1 LABEL MAX(Col2) '停留天数'", 1))
  • MINIFS/MAXIFS分别提取每个国家的最早、最晚停留日期
  • DATEDIFF(..., ..., "D")+1计算间隔天数(+1是为了包含首尾两天)
  • ARRAYFORMULA实现批量计算

场景3:匹配示例输出(统计每个国家的不同城市停留数)

若示例中巴西的3天指不同城市的停留数量,使用以下公式:

=QUERY(A:D, "SELECT C, COUNT(DISTINCT D) WHERE C <> '' GROUP BY C LABEL COUNT(DISTINCT D) '停留天数'", 1)
  • COUNT(DISTINCT D)统计每个国家对应的不重复城市数量,匹配示例中巴西3个城市的结果

内容的提问来源于stack exchange,提问作者AngeloMerkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:27:34