SQL新手求助:编写Oracle报表查询实现指定数据聚合展示
报表查询SQL语句实现
需求说明
按Number字段分组,统计每组的以下信息:
- NO字段的最小值(
NO min) - Date字段的最小值(
Date min) - NO字段的最大值(
NO max) - Date字段的最大值(
Date max) - 每组的记录总数(
Count)
实现SQL语句
假设数据表名为report_data,可根据实际表名替换:
SELECT Number, MIN(NO) AS `NO min`, MIN(Date) AS `Date min`, MAX(NO) AS `NO max`, MAX(Date) AS `Date max`, COUNT(*) AS Count FROM report_data GROUP BY Number ORDER BY Number;
语句解释
GROUP BY Number:将相同Number的记录归为一组,所有聚合计算都基于分组进行MIN(NO)/MAX(NO):分别计算每组中NO字段的最小、最大值,用AS指定别名匹配报表列名MIN(Date)/MAX(Date):分别计算每组中Date字段的最小、最大值COUNT(*):统计每组内的记录条数,即该Number对应的总数据量ORDER BY Number:按Number排序结果,让输出更规整
查询结果
执行后将得到符合需求的报表视图:
| Number | NO min | Date min | NO max | Date max | Count |
|---|---|---|---|---|---|
| 111 | 330 | 13.11.22 | 332 | 14.11.22 | 3 |
| 122 | 310 | 11.11.22 | 312 | 12.11.22 | 3 |
内容的提问来源于stack exchange,提问作者StimDoker
相关产品推荐
相关产品推荐

