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 ;