前言:
昨天没更,准备下项目今天打算面字节。跟大家分享下,很抽象,上来就是自我介绍加说手撕sql,感觉不难但是很抽象,没a出来。然后换了到sql,一样没做出来,最后换了个算法,做出来了,然后啥没问,基本挂了。看来sql能力还是有待提高,所以新开一个系列,sql每日一练,也可能每日多练分好几天发,嘿嘿。对了,下周四考试,中间少投简历了,打算先复习考试。
对了面了沐数科技做了笔试,以为是习题,结果是找规律和性格测试,昨天看了看这家公司之前的sql题贮备了下,感觉还不错(至少正常且合理),就拿这个题来一套。
题目:
1、查询每个表2020年9月法国,英国销售综合,结果输出国家、产品id、产品名称、销售金额。
2、2020年9月英国销售金额最高的产品是哪个?销售金额是多少(四舍五入整数)?如产品A 1000
产品表 p
product_id | product_name |
---|---|
1 | 产品 A |
2 | 产品 B |
3 | 产品 C |
销售表 s
sale_id | product_id | country | amount | sale_date |
---|---|---|---|---|
1 | 1 | 法国 | 1000.00 | 2020-09-15 |
2 | 2 | 法国 | 1500.00 | 2020-09-20 |
3 | 3 | 法国 | 800.00 | 2020-09-10 |
4 | 1 | 英国 | 1200.00 | 2020-09-25 |
5 | 2 | 英国 | 1600.00 | 2020-09-05 |
6 | 3 | 英国 | 900.00 | 2020-09-30 |
第一问: (很简单根据想要的结构查询做一个连接就ok)
SELECT
s.country,
p.product_id,
p.product_name,
SUM(s.amount) AS total_sales
FROM
sales s
JOIN
products p ON s.product_id = p.product_id
WHERE
s.country IN ('法国', '英国')
AND s.sale_date BETWEEN '2020-09-01' AND '2020-09-30'
GROUP BY
s.country,
p.product_id,
p.product_name
ORDER BY
s.country,
p.product_id;
第二问:根据结果select+表连接最后加个limit限制条件即可
SELECT
p.product_name,
SUM(s.amount) AS total_sales
FROM
sales s
JOIN
product p ON s.product_id = p.product_id
WHERE
s.country = '英国'
AND s.sale_date BETWEEN '2020-09-01' AND '2020-09-30'
GROUP BY
p.product_name
ORDER BY
total_sales DESC
LIMIT 1;