当前位置: 首页> 健康> 养生 > MySQL -- SQL笔试题相关

MySQL -- SQL笔试题相关

时间:2025/7/11 20:21:52来源:https://blog.csdn.net/Afison/article/details/139325059 浏览次数:0次

1.银行代缴花费bank_bill

字段名描述
serno流水号
date交易日期
accno账号
name姓名
amount金额
brno缴费网点
  • serno: 一个 BIGINT UNSIGNED 类型的列,作为主键,且不为空。该列是自动增量的,每次插入新行时,都会自动递增生成一个唯一的值。

  • date: 一个 DATE 类型的列,存储日期信息,不为空。

  • accno: 一个 VARCHAR(100) 类型的列,用于存储账号信息,不为空。

  • name: 一个 VARCHAR(50) 类型的列,用于存储姓名信息,不为空。

  • amount: 一个 DECIMAL(10, 1) 类型的列,用于存储金额信息,不为空。该列的定义表示它可以存储最大 10 位数,其中小数点后有 1 位。

  • brno: 一个 VARCHAR(150) 类型的列,用于存储分行信息,不为空。

建表如下:

CREATE TABLE `bank_bill` (`serno` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`date` date NOT NULL,`accno` varchar(100) NOT NULL,`name` varchar(50) NOT NULL,`amount` decimal(10,1) NOT NULL,`brno` varchar(150) NOT NULL,PRIMARY KEY (`serno`)
) ENGINE=InnoDB AUTO_INCREMENT=10011 DEFAULT CHARSET=utf8

 插入些数据:

INSERT INTO bank_bill (serno, date, accno, name, amount, brno) VALUES
(10001, '2024-05-01', '1234567890', 'zhang', 1000.5, '支行 A'),
(10002, '2024-05-01', '2345678901', 'li', 2000.3, '支行 C'),
(10003, '2024-05-01', '3456789012', 'zhang', 1500.2, '支行 B'),
(10004, '2024-05-01', '4567890123', 'wang', 2500.7, '支行 B'),
(10005, '2024-05-02', '5678901234', 'li', 1800.4, '支行 E'),
(10006, '2024-05-02', '6789012345', 'liu', 2200.9, '支行 B'),
(10007, '2024-05-03', '7890123456', 'luo', 1700.6, '支行 C'),
(10008, '2024-05-03', '8901234567', 'xie', 1900.8, '支行 A'),
(10009, '2024-05-04', '9012345678', 'zhang', 2100.2, '支行 D'),
(10010, '2024-05-04', '0123456789', 'ma', 2400.5, '支行 C');

 

1、统计表中缴费的总笔数和总金额

select count(serno),sum(amount) from bank_bill;

 

2、给出一个sql,按网点和日期统计每个网点每天的营业额,并按照营业额进行倒序排序

 select brno,date,sum(amount) as money from bank_bill group by brno,date order by money desc;

 3.查询每个客户的平均缴费金额:

SELECT name, AVG(amount) AS avg_amount
FROM bank_bill
GROUP BY name;

4.找出最大单笔交易的客户姓名和金额:

SELECT name, amount
FROM bank_bill
WHERE amount = (SELECT MAX(amount) FROM bank_bill);

5.统计每个网点的交易次数和总金额,并按交易次数排序:

SELECT brno, COUNT(*) AS transaction_count, SUM(amount) AS total_amount
FROM bank_bill
GROUP BY brno
ORDER BY transaction_count ASC;

 6.列出交易额在平均交易额之上的所有交易记录:

SELECT *
FROM bank_bill
WHERE amount > (SELECT AVG(amount) FROM bank_bill);

7.按月份统计交易总额和总笔数:

SELECT YEAR(date) AS year, MONTH(date) AS month, SUM(amount) AS total_amount, COUNT(*) AS total_transactions
FROM bank_bill
GROUP BY YEAR(date), MONTH(date);

关键字:MySQL -- SQL笔试题相关

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: