SQL语句练习实例之三——平均销售等待时间

复制代码 代码如下:

---1.平均销售等待时间

---有一张Sales表,其中有销售日期与顾客两列,现在要求使用一条SQL语句实现计算

--每个顾客的两次购买之间的平均天数

--假设:在同一个人在一天中不会购买两次

create table sales

(

custname varchar(10) not null,

saledate datetime not null

)

go

insert sales

select '张三','2010-1-1' union

select '张三','2010-11-1' union

select '张三','2011-1-1' union

select '王五','2010-2-1' union

select '王五','2010-4-1' union

select '李四','2010-1-1' union

select '李四','2010-5-1' union

select '李四','2010-9-1' union

select '李四','2011-1-1' union

select '赵六','2010-1-1' union

select '钱途','2010-1-1' union

select '钱途','2011-3-1' union

select '张三','2011-9-1'

go

select custname,DATEDIFF(d,min(saledate),max(saledate))/(COUNT(*)-1) as avgday

from sales

group by custname

having count(*)>1

go

select custname,case when count(*)>1 then DATEDIFF(d,min(saledate),max(saledate))/(COUNT(*)-1)

else DATEDIFF(d,min(saledate),max(saledate)) end

as avgday

from sales

group by custname

--having count(*)>1

go

drop table sales

时间: 2024-07-31 16:35:24

SQL语句练习实例之三——平均销售等待时间的相关文章

SQL语句练习实例之三——平均销售等待时间_MsSql

复制代码 代码如下: ---1.平均销售等待时间 ---有一张Sales表,其中有销售日期与顾客两列,现在要求使用一条SQL语句实现计算 --每个顾客的两次购买之间的平均天数 --假设:在同一个人在一天中不会购买两次 create table sales ( custname varchar(10) not null, saledate datetime not null ) go insert sales select '张三','2010-1-1' union select '张三','20

php中实现用数组妩媚地生成要执行的sql语句_php实例

会不会碰到这样一种情况呢?每次获取数据将数据和历史版本都有一定的差别,然而用ThinkPHP的addAll()函数,却会将已有的数据删掉再重新写入.这明显不是我们想要的.但自己写sql每次几十个字段也是醉了.如何优雅而又轻松地实现sql的自动生成呢?于是有了下面这个方法. /** * [array_to_sql 根据数组key和value拼接成需要的sql] * @param [type] $array [key, value结构数组] * @param string $type [sql类型i

PHP实现的构造sql语句类实例_php技巧

本文实例讲述了PHP实现的构造sql语句类.分享给大家供大家参考,具体如下: /** * @package Database Class * @author injection (mail:injection.mail@gmail.com) * @version 1.0 */ @ini_set( 'display_errors',0 ); class DataBase{ private $mDb_host,$mAb_user,$mAb_pwd,$mConn_No; function DataBa

SQL语句练习实例之二——找出销售冠军_MsSql

复制代码 代码如下: --销售冠军 --问题:在公司中,老板走进来,要一张每个地区销量前3名的销售额与销售员的报表 --- create table salesdetail ( Area int not null, Saler nvarchar(20) not null, SalerId int not null, Sales money not null ) insert salesdetail select 1,'张三',15,3000 union select 1,'赵一',16,3500

SQL语句练习实例之二——找出销售冠军

复制代码 代码如下: --销售冠军 --问题:在公司中,老板走进来,要一张每个地区销量前3名的销售额与销售员的报表 --- create table salesdetail ( Area int not null, Saler nvarchar(20) not null, SalerId int not null, Sales money not null ) insert salesdetail select 1,'张三',15,3000 union select 1,'赵一',16,3500

SQL语句练习实例之四 找出促销活动中销售额最高的职员_MsSql

复制代码 代码如下: ---找出促销活动中销售额最高的职员 ---你刚在一家服装销售公司中找到了一份工作,此时经理要求你根据数据库中的两张表得到促销活动销售额最高的销售员 ---1.一张是促销活动表 ---2.一张是销售客列表 create table Promotions ( activity nvarchar(30), sdate datetime, edate datetime ) insert Promotions select '五一促销活动','2011-5-1','2011-5-7

SQL语句练习实例之一——找出最近的两次晋升日期与工资额_MsSql

复制代码 代码如下: --程序员们在编写一个雇员报表,他们需要得到每个雇员当前及历史工资状态的信息, --以便生成报表.报表需要显示每个人的晋升日期和工资数目. --如果将每条工资信息都放在结果集的一行中,并让宿主程序去格式化它. --应用程序的程序员都是一帮懒人,他们需要在每个雇员的一行上得到当前 --和历史工资信息.这样就可以写一个非常简单的循环语句. ---示例: create table salaries ( name nvarchar(50) not null, sal_date da

SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析_MsSql

复制代码 代码如下: ---在仓储管理中经常会碰到的一个问题 一.关于LIFO与FIFO的简单说明 ---FIFO: First in, First out.先进先出. ---LIFO: Last in, First out.后进先出. --如货物A:本月1日购买10件,单价10元/件,3日购买20件,单价15元/件:10日购买10件,单价8元/件. --本月15日发货35件. --按FIFO先进先出,就是先购入的存货先发出,所以,先发1日进货的10件,再发3日进货的20件,最后发10日进货的5

SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析

复制代码 代码如下: ---在仓储管理中经常会碰到的一个问题 一.关于LIFO与FIFO的简单说明 ---FIFO: First in, First out.先进先出. ---LIFO: Last in, First out.后进先出. --如货物A:本月1日购买10件,单价10元/件,3日购买20件,单价15元/件:10日购买10件,单价8元/件. --本月15日发货35件. --按FIFO先进先出,就是先购入的存货先发出,所以,先发1日进货的10件,再发3日进货的20件,最后发10日进货的5