第一个查询:用户表
myuser
(
int:uid //自动增长
varchar:uname //用户名
)销售记录表
mysell
(
int:sid //自动增长
int:uid //用户ID,即购买者
datetime:addtime //购物时间
)
要求查询:出过去6个月中,在单月中购物超过三次的用户,最好能如下显示:
uname/购物超出三次的月份/次数/---------------------------------------------------------------
---------------------------------------------------------------第二个查询:用户表
myuser
(
int:uid //自动增长
varchar:uname //用户名
)产品表:
myproduct
(
int:pid //自动增长
varchar:pname //产品名
)销售记录表
mysell
(
int:sid //自动增长
int:uid //用户ID,即购买者
int:pid //产品ID
int:amount //购物量
datetime:addtime //购物时间
)
要求查询:在过去三个月内,购买同一个产品超过三件的顾客,最好能如下显示:
uname/pname/购物量/
myuser
(
int:uid //自动增长
varchar:uname //用户名
)销售记录表
mysell
(
int:sid //自动增长
int:uid //用户ID,即购买者
datetime:addtime //购物时间
)
要求查询:出过去6个月中,在单月中购物超过三次的用户,最好能如下显示:
uname/购物超出三次的月份/次数/---------------------------------------------------------------
---------------------------------------------------------------第二个查询:用户表
myuser
(
int:uid //自动增长
varchar:uname //用户名
)产品表:
myproduct
(
int:pid //自动增长
varchar:pname //产品名
)销售记录表
mysell
(
int:sid //自动增长
int:uid //用户ID,即购买者
int:pid //产品ID
int:amount //购物量
datetime:addtime //购物时间
)
要求查询:在过去三个月内,购买同一个产品超过三件的顾客,最好能如下显示:
uname/pname/购物量/
第一个,没有测试过,大致模样就是这样子的。
where addtime>=date_sub(now(),interval 3 month) and mysell.uid=myuser.uid and mysell.pid=myproduct.pid group by mysell.uid,mysell.pid having total_amount>3;
不知道你所说的三个月前是严格的90天以前,还是加上本月的前两个月——未满一月算一月。
where addtime>=date_sub(now(),interval 6 month) and mysell.uid=myuser.uid group by month,mysell.uid having counter>3;
第一例修正如上。
p.pname,
SUM(amount)
FROM mysell s
INNER JOIN myuser u
ON s.uid = u.uid
INNER JOIN myproduct p
ON s.pid = p.pid
WHERE DATEADD("Month",3,s.addtime)>=GETDATE()
GROUP BY u.uname,p.pname
HAVING SUM(amount)>3