面试题如下
甲乙丙丁四个人组团吃饭,每顿饭的金额AA,每次人数不固定,金额也不固定,如何建表,并算出一个月每个人应该出多少钱
数据表如下
CREATE TABLE `demo` (
`日期` varchar(255) DEFAULT NULL,
`金额` varchar(255) DEFAULT NULL,
`用餐人数` varchar(255) DEFAULT NULL,
`用餐人员` varchar(255) DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `demo` VALUES ('2021-01-01', '30', '3', '甲,乙,丙', 1);
INSERT INTO `demo` VALUES ('2021-01-02', '45', '3', '乙,丙,丁', 2);
INSERT INTO `demo` VALUES ('2021-01-03', '40', '2', '甲,丁', 3);
INSERT INTO `demo` VALUES ('2021-01-04', '60', '4', '甲,乙,丙,丁', 4);

算出每人一共需要出多少钱
使用如下代码算出
SELECT
a.id,
substring_index(
substring_index( a.用餐人员, ',', b.help_topic_id + 1 ),
',',- 1
) AS NAME,
(金额/用餐人数) AS mony,日期
FROM
demo a
JOIN mysql.help_topic b ON b.help_topic_id < (
length( a.用餐人员 ) - length(
REPLACE ( a.用餐人员, ',', '' ))+ 1
)
ORDER BY
a.ID
每个人每天应该平摊的费用
再使用
SELECT
sum( c.mony ),
NAME
FROM
(
SELECT
a.id,
substring_index(
substring_index( a.用餐人员, ',', b.help_topic_id + 1 ),
',',- 1
) AS NAME,
(金额/用餐人数) AS mony,日期
FROM
demo a
JOIN mysql.help_topic b ON b.help_topic_id < (
length( a.用餐人员 ) - length(
REPLACE ( a.用餐人员, ',', '' ))+ 1
)
ORDER BY
a.ID
) AS c
GROUP BY
c.NAME
算出每个人一共需要平摊的费用
版权声明:本文为u011546137原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。