SQL编程实例:Access数据库,两张表的统计,count、sum聚合函数的使用,iif的使用,group by的使用
2014-05-03 21:19
447 查看
使用工具:
FineReport报表设计器,Access数据库
需求描述:
有两张表,订单表和订单明细表
1、订单表结构:
2、订单明细表结构:
目的:根据这两张表做出下面的一张表
分析:
1、因为在订单明细里订单ID可能出现多次,所以一定要先把订单ID去重,否则两张表join的时候,订单ID就会有重复的,这时用count函数求订单数量时就会出错了
所以先将订单明细表按订单ID进行分组:
解答:
部分解释:
1、year,month是帆软设计器自带函数,例如,year函数作用是将2014-5-3取得年份2014
2、iif(是否已付=1,1,0)是Access数据库条件判断,作用是,如果是否已付=1,则返回1,否则返回0
3、${year}是传过来的参数
FineReport报表设计器,Access数据库
需求描述:
有两张表,订单表和订单明细表
1、订单表结构:
2、订单明细表结构:
目的:根据这两张表做出下面的一张表
分析:
1、因为在订单明细里订单ID可能出现多次,所以一定要先把订单ID去重,否则两张表join的时候,订单ID就会有重复的,这时用count函数求订单数量时就会出错了
所以先将订单明细表按订单ID进行分组:
(select 订单ID,sum(数量*单价*(1-折扣)) as 订单销量 from 订单明细 group by 订单ID)然后再两张表join:
select 单子.订单ID,订购年份,订购月份,订单销量,是否已付 from (SELECT 订单ID,year("订购日期") as 订购年份,month("订购日期") as 订购月份,是否已付 from 订单) as 单子, (select 订单ID,sum(数量*单价*(1-折扣)) as 订单销量 from 订单明细 group by 订单ID) as 详情 where 单子.订单ID=详情.订单ID2、接下来就是需要对以上求出的这张”总表“进行按年份和月份分组,count(订单ID)求订单数量,sum聚合函数进行带有条件的求和来求已付订单数量等。
解答:
select 订购年份,订购月份,count(订单ID) as 订单数量,sum(订单销量*iif(是否已付=1,1,0)) as 已付订单数量,sum(订单销量) as 销量 from
(select 单子.订单ID,订购年份,订购月份,订单销量,是否已付 from (SELECT 订单ID,year("订购日期") as 订购年份,month("订购日期") as 订购月份,是否已付 from 订单) as 单子, (select 订单ID,sum(数量*单价*(1-折扣)) as 订单销量 from 订单明细 group by 订单ID) as 详情 where 单子.订单ID=详情.订单ID
)
where 订购年份 =${year}
group by 订购年份,订购月份
部分解释:
1、year,month是帆软设计器自带函数,例如,year函数作用是将2014-5-3取得年份2014
2、iif(是否已付=1,1,0)是Access数据库条件判断,作用是,如果是否已付=1,则返回1,否则返回0
3、${year}是传过来的参数
相关文章推荐
- GROUP BY 聚合函数(max min sum avg count) 和HAVING的 使用
- 聚合函数(sum、count、max、min、avg)、where、group by、having的组合用法实例
- 使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
- 聚合函数和分组(sum(),count(),group by having)
- Sql中sum()函数和group by 函数的使用
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql语句中,group by和having count()的使用
- 学习 SQL 语句 - Select(7): 分组统计之 Avg()、Sum()、Max()、Min()、Count()
- sql语句中GROUP BY 和 HAVING的使用 count()
- sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):统计总数
- mybatis使用group by返回sum,count数据
- sql中奇怪的sum(1),sum(2),count(1),count(6),count(*):统计总数
- 使用GROUP BY统计记录条数 COUNT(*) DISTINCT
- sql 统计 sum case配合使用
- SQL编程实例:Oracle,统计n次考试的成绩
- sql语句中GROUP BY 和 HAVING的使用 count()
- SQL---DML---聚集函数AVG(),COUNT(),SUM(),MAX(),MIN()的使用
- sql 聚合函数和group by 联合使用
- 命名sql使用sum( $field$ )动态统计总数,执行报错