求和函数 sum() 返回指定字段值的和
获取某个门店每天每种商品的销售总计情况
select left(b.transdate,10).c.goodsname,sum(a.quantity),sum(a.salesvalue)
from demo.transactiondetails as a
join demo.transactionhead as b on (a.transactionid=b.transactionid)
join demo.goodsmaster as c as (b.itemnumber=c.itemunmber)
group by left(b.transdate,10),c.goodsname
order by left(b.transdate,10),c.goodsname;
left(str,n) 返回字符串str最左边的n个字符
获取全部商品的销售总计数量和总计金额 把数据集整体看作一个分组计算
select sum(quantity),sum(salesvalue) from demo.transactiondetails;
平均函数avg() 返回指定字段的平均值
计算每天,每种商品平均一次卖出多少个,多少钱
select left(b.transdate,10).c.goodsname,avg(a.quantity),avg(a.salesvalue)
from demo.transactiondetails as a
join demo.transactionhead as b on (a.transactionid=b.transactionid)
join demo.goodsmaster as c as (b.itemnumber=c.itemunmber)
group by left(b.transdate,10),c.goodsname
order by left(b.transdate,10),c.goodsname;
最大值函数max() 返回指定字段在分组中的最大值
计算每天的一次销售的最大数量和最大金额
select left(b.transdate,10).c.goodsname,max(a.quantity),max(a.salesvalue)
from demo.transactiondetails as a
join demo.transactionhead as b on (a.transactionid=b.transactionid)
join demo.goodsmaster as c as (b.itemnumber=c.itemunmber)
group by left(b.transdate,10),c.goodsname
order by left(b.transdate,10),c.goodsname;
注意!!!max(a.quantity)和max(a.salesvalue)不一定是同一条记录的数据 它们是分别计算的
最小值函数min() 返回指定字段在分组中的最小值
计数函数count()
数据很多并且在查询的时候经常卡顿的现象 使用分页策略解决
分页策略:不把查询结果一次性全部返回给客户端 根据用户电脑屏幕的大小,计算一屏可以显示的记录数,每次只返回用户电脑屏幕可以显示的数据集 然后通过翻页,跳转等功能按钮实现查询目标的精准锁定。
分页策略的关键:计算出符合条件的记录一共有多少条
计算记录数使用count()函数
count(字段) 统计有多少个不为空的字段值
select count(goodsname) from demo.goodmaster;
count(*) 统计一共有多少条记录
count(*)与group by一起使用表示统计分组内有多少条数据
count(*)可以单独使用 统计全部数据集的记录数
计算每天每种商品都有几次销售,需要按天按商品名称进行分组查询
select left(a.transdate,10),c.goodsname,count(*)
from demo.transactionhead as a
join demo.transactiondetails as b on (a.transactionid=b.transactionid)
join demo.goodmaster as c on (b.itemnumber=c.itemnumber)
group by left(a.transdate,10),c.goodsname
order by left(a.transdate,10),c.goodsname;