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

如何在BIRT中编写含CASE WHEN的查询以实现指定统计效果?

在BIRT中实现城市人口分类统计的两种方法

你可以通过以下两种方式,实现和你提供的SQL完全一致的城市人口分类统计结果:

方法一:直接复用现有SQL作为数据源

这是最直接高效的方式,把已验证的SQL直接作为BIRT数据集的查询语句:

  1. 打开BIRT报表设计器,新建报表项目与空白报表文件。
  2. 配置数据源,完成与MySQL数据库(对应phpMyAdmin中的test库)的连接。
  3. 新建数据集,将以下SQL直接粘贴到查询编辑器中:
SELECT
    CASE
        WHEN `ville_population_2012` < 500 THEN "Moins de 500 habitants"
        WHEN `ville_population_2012` >= 500 AND `ville_population_2012` <= 10000 THEN "Entre 500 et 10000 habitants"
        ELSE "Plus de 10000 habitants"
    END AS categorie,
    COUNT(*) AS nombre_villes
FROM `test`.villes_france_free
GROUP BY categorie;
  1. 预览数据集确认数据无误后,在报表中添加表格组件,将categorie和nombre_villes字段拖入表格列,即可展示统计结果。

方法二:在BIRT报表层面实现分组与计算

如果需要在报表端处理逻辑,可先获取原始数据,再通过BIRT的内置功能完成统计:

  1. 新建数据集,使用基础查询获取所有城市的人口数据:
SELECT `ville_population_2012` FROM `test`.villes_france_free
  1. 在报表中添加表格组件,将ville_population_2012字段拖入表格的详细行。
  2. 创建计算字段:在数据集的「计算字段」设置中,新增名为categorie的字段,表达式编写如下:
if (row["ville_population_2012"] < 500) {
    return "Moins de 500 habitants";
} else if (row["ville_population_2012"] >= 500 && row["ville_population_2012"] <= 10000) {
    return "Entre 500 et 10000 habitants";
} else {
    return "Plus de 10000 habitants";
}
  1. 设置分组规则:选中表格的详细行,右键选择「插入分组」,以categorie字段作为分组依据。
  2. 添加聚合统计:在分组脚注行中添加数据项,选择聚合函数COUNT并关联ville_population_2012字段,将该数据项重命名为nombre_villes。
  3. 隐藏表格的详细行(仅保留分组头和分组脚注),预览报表即可得到与SQL一致的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:43:17