多表查询求统计,求sql语句

意识模糊 2012-07-26 09:31:29
有三个表:A,B,C
A表保存会员信息,包括ID,会员等级(1,2,3,4)等
B表保存会员购买信息(购买金额)
C表保存会员登录时间(类型datetime)
每个表都有会员的ID,求今年2月后还有登录记录并且消费大于10块各个等级会员的个数和2月后没有登录过的记录
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tim_spac_126 2012-07-26
  • 打赏
  • 举报
回复

-- 各个等级会员的个数
select Level, count(1)
from A
left join (
select userID
from B
group by userID
-- 消费大于10
having sum(amount)>10
) as b on a.ID = b.userID
where 1=1
-- 今年2月后还有登录记录
and exists (select 1 from C where c.userID = a.ID
and c.logintime >= '2012-02-01')
group by Level
以学习为目的 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 1 楼 的回复:

SQL code


--今年2月后还有登录记录并且消费大于10块各个等级会员的个数
SELECT 会员等级,COUNT(1) AS num
FROM a INNER JOIN B ON A.Id = B.Id AND B.购买金额 > 10
INNER JOIN C ON A.Id = C.id AND 登录时间 > RTRIM(DATEPART(YEA……
[/Quote]


--try
SELECT 会员等级, COUNT(*) AS NUM
FROM A ,B, C
WHERE A.Id = C.id and
B.Id = C.id and
B.消费金额>'10' and
C.登录时间 < RTRIM(DATEPART(YEAR,GETDATE())) + '-03-01 0:00:00')
GROUP BY 会员等级



意识模糊 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

SQL code


--今年2月后还有登录记录并且消费大于10块各个等级会员的个数
SELECT 会员等级,COUNT(1) AS num
FROM a INNER JOIN B ON A.Id = B.Id AND B.购买金额 > 10
INNER JOIN C ON A.Id = C.id AND 登录时间 > RTRIM(DATEPART(YEAR,GETDATE())) + '-0……
[/Quote]
2月后没有登录过的记录也要统计消费超过10块的各个等级会员数量,sql怎么写,谢谢
以学习为目的 2012-07-26
  • 打赏
  • 举报
回复

--今年2月后还有登录记录并且消费大于10块各个等级会员的个数
select A.会员等级,
COUNT(*)
from A,B,C
where A.ID=B.ID and
A.ID=C.ID and
B.购买金额>'10' and
C.登陆时间> RTRIM(DATEPART(YEAR,GETDATE())) + '-03-01 0:00:00'
GROUP BY 会员等级

--2月后没有登录过的记录


SELECT ID,登陆时间
FROM A , C
WHERE A.Id = C.id and
C.登录时间 < RTRIM(DATEPART(YEAR,GETDATE())) + '-03-01 0:00:00')

CAD233 2012-07-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SELECT 会员等级,COUNT(*) AS numFROM a,b,c
where A.Id = B.Id
and A.Id = C.id
and B.购买金额 > 10
and 登录时间 > RTRIM(DATEPART(YEAR,GETDATE())) + '-02-01 0:00:00')
GROUP BY 会员等级
[/Quote]
不知道有没有错,求指导,新手求帮助
CAD233 2012-07-26
  • 打赏
  • 举报
回复
SELECT 会员等级,COUNT(*) AS numFROM a,b,c
where A.Id = B.Id
and A.Id = C.id
and B.购买金额 > 10
and 登录时间 > RTRIM(DATEPART(YEAR,GETDATE())) + '-02-01 0:00:00')
GROUP BY 会员等级
孤独加百列 2012-07-26
  • 打赏
  • 举报
回复


--今年2月后还有登录记录并且消费大于10块各个等级会员的个数
SELECT 会员等级,COUNT(1) AS num
FROM a INNER JOIN B ON A.Id = B.Id AND B.购买金额 > 10
INNER JOIN C ON A.Id = C.id AND 登录时间 > RTRIM(DATEPART(YEAR,GETDATE())) + '-03-01 0:00:00'
GROUP BY 会员等级

--2月后没有登录过的记录
SELECT ID,会员等级
FROM a
WHERE NOT EXISTS (SELECT 1 FROM C WHERE A.Id = C.id AND 登录时间 > RTRIM(DATEPART(YEAR,GETDATE())) + '-03-01 0:00:00')

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧