mysql笔试题

user表

u_id

u_name

1

王大拿

2

张二爷

3

冯三炮

fund表

f_id

f_name

1001

P2P

1002

创新基金

1003

境内保险

1004

境外保险

grades表

u_id

f_id

money

1

1001

5000

1

1002

10000

2

1001

30000

2

1004

12000

3

1001

20000

user表是用户表,u_id是用户id,u_name是用户名

fund表是产品表,f_id是产品id,f_name是产品名称

grades表是购买记录表,记录用户买了哪个产品多少金额

money是金额

问题1:编写sql语句。购买了产品的用户,算出每个用户购买产品的总金额,并按照总金额倒序排序。要求输出:u_id,u_name和总金额三个字段。

SELECT u.u_id,u.u_name,SUM(g.money) FROM user u, grades g

WHERE  u.u_id = g.u_id GROUP BY g.u_id

ORDER BY SUM(g.money) DESC;

问题2:编写sql语句,计算出每个用户没有购买哪种产品,按照用户id正序排序。要求输出u_id,u_name,f_id,f_name四个字段。

SELECT * FROM

(SELECT u.u_id,u.u_name,f.f_id,f.f_name from user u,fund f) a

LEFT JOIN

(SELECT u.u_id,u.u_name,f.f_id,f.f_name from user u,fund f,grades g WHERE u.u_id = g.u_id and f.f_id = g.f_id) b

on a.u_id=b.u_id and a.f_id=b.f_id

where b.u_id is null or b.f_id is null

ORDER BY a.u_id ;

原文地址:https://www.cnblogs.com/smartsmile-yxh/p/12628200.html