日常在处理订单的时候我们会遇到一些问题。
假设现在有2个表,订单orders表和用户customers表。
其中orders的表结构如下
order_id
customer_id
order_date
1
101
2022-07-01 10:00:00
2
102
2022-07-02 11:30:00
3
101
2022-07-03 15:45:00
4
103
2022-07-04 09:20:00
5
102
2022-07-05 14:10:00
customers的表结构如下
表格示例
table {
width: 50%;
border-collapse: collapse;
margin: 20px auto;
}
th, td {
border: 1px solid #000;
padding: 8px;
text-align: center;
}
th {
background-color: #f2f2f2;
}
customer_id
customer_name
101
aaa
102
bbb
103
ccc
现在你需要输出每个用户最后一次下单的信息,包括:order_id,customer_name,最近下单日期,按照customer_name升序排序。
上面的例子输出如下
订单表格
table {
width: 50%;
border-collapse: collapse;
margin: 20px auto;
}
th, td {
border: 1px solid #000;
padding: 8px;
text-align: center;
}
th {
background-color: #f2f2f2;
}
order_id
customer_name
order_date
3
aaa
2022-07-03 15:45:00
5
bbb
2022-07-05 14:10:00
4
ccc
2022-07-04 09:20:00drop table if exists orders; CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATETIME ); INSERT INTO orders (order_id, customer_id, order_date) VALUES (1, 101, '2022-07-01 10:00:00'), (2, 102, '2022-07-02 11:30:00'), (3, 101, '2022-07-03 15:45:00'), (4, 103, '2022-07-04 09:20:00'), (5, 102, '2022-07-05 14:10:00'); drop table if exists customers; CREATE TABLE customers ( customer_id INT PRIMARY KEY, customer_name VARCHAR(50) ); INSERT INTO customers (customer_id, customer_name) VALUES (101, 'aaa'), (102, 'bbb'), (103, 'ccc');
order_id|customer_name|order_date 3|aaa|2022-07-03 15:45:00 5|bbb|2022-07-05 14:10:00 4|ccc|2022-07-04 09:20:00
考点:排序
限制 1 秒 / 256MB | SQL 题
本题是 SQL 题:给出建表语句与目标结果,要求写出查询语句。
建议步骤
GROUP BY 聚合,过滤分组结果用 HAVING。ROW_NUMBER()、RANK()、SUM() OVER)。易错点:排序方向写反;GROUP BY 后选了非分组字段;没做 ROUND 保留小数;空值参与聚合。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年春招-京东-技术通用岗位-第五批笔试。