GROUP BY 或者DISTINCT 结果异常

为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
group by 或者disticn 结果错误
【背景】做过哪些操作?

【业务影响】
结果错误
【是否存算分离】

【StarRocks版本】
4.0.0
【集群规模】
1fe1be 混布
【机器信息】
48C/64G/万兆
【联系方式】
【附件】
TABLE DDL
– db_example.t_calendar definition

CREATE TABLE t_calendar (
uniquekey bigint(20) NOT NULL AUTO_INCREMENT COMMENT “自增id”,
calendar_day date NOT NULL COMMENT “日历日”,
calendar_year date NOT NULL COMMENT “年”,
calendar_quarter date NOT NULL COMMENT “季度”,
calendar_month date NOT NULL COMMENT “月”,
calendar_week date NOT NULL COMMENT “周”,
status int(11) NULL COMMENT “0 普通工作日、1 周末双休日、2 需要补班的工作日、3 法定节假日”,
holiday_name varchar(256) NULL COMMENT “节假日名称”
) ENGINE=OLAP
DUPLICATE KEY( uniquekey )
COMMENT “日历日表”
DISTRIBUTED BY HASH( uniquekey )
PROPERTIES (
“compression” = “LZ4”,
“fast_schema_evolution” = “true”,
“replicated_storage” = “true”,
“replication_num” = “1”
);
SELECT SQL:
1.select holiday_name,count(*) from db_example.t_calendar group by holiday_name ;
2.select distinct holiday_name from db_example.t_calenda;


最可能的原因是 calendar_year 等字段使用了错误的 DATE 类型 ,导致数据在导入时被 StarRocks 自动转换,从而影响了后续的查询逻辑。

使用 VARCHARINT 存储非完整日期信息(推荐)

如果 calendar_year 字段只需要存储年份数字(例如 2025 ),那么应该使用 INTVARCHAR 类型,而不是 DATE 类型。

修改后的 DDL 建议:

CREATE TABLE t_calendar (
    uniquekey bigint(20) NOT NULL AUTO_INCREMENT COMMENT “自增id”,
    calendar_day date NOT NULL COMMENT “日历日”,
    calendar_year smallint(6) NOT NULL COMMENT “年”,  -- 改为 SMALLINT
    calendar_quarter tinyint(4) NOT NULL COMMENT “季度 (1-4)”, -- 改为 TINYINT
    calendar_month tinyint(4) NOT NULL COMMENT “月 (1-12)”, -- 改为 TINYINT
    calendar_week tinyint(4) NOT NULL COMMENT “周 (1-53)”, -- 改为 TINYINT
    status int(11) NULL COMMENT “0 普通工作日、1 周末双休日、2 需要补班的工作日、3 法定节假日”,
    holiday_name varchar(256) NULL COMMENT “节假日名称”
) ENGINE=OLAP
...

sr35的相同表结构,结果是正常的。sr40按照你的建议后,还是错误。

已解决。