Mysql刷題筆記 1.20 對相同月份的資料均分Amount
阿新 • • 發佈:2021-01-21
Mysql刷題筆記
CREATE TABLE T0120
(
ID int,
NAME varchar(22),
MON int,
STATE varchar(21),
AMOUNT int
);
INSERT INTO T0120 VALUES(1,'張三',201901,'A',9000);
INSERT INTO T0120 VALUES(2,'張三',201901,'B',9000);
INSERT INTO T0120 VALUES(3,'張三',201901,'E',9000);
INSERT INTO T0120 VALUES(4,'李四',201902,'A',1800);
INSERT INTO T0120 VALUES(5,'李四',201902,'C',1800);
INSERT INTO T0120 VALUES(6,'王五',201902,'C',30000);
INSERT INTO T0120 VALUES(7,'王五',201902,'F',30000);
T0120
+------+--------+--------+-------+--------+
| ID | NAME | MON | STATE | AMOUNT |
+------+--------+--------+-------+--------+
| 1 | 張三 | 201901 | A | 9000 |
| 2 | 張三 | 201901 | B | 9000 |
| 3 | 張三 | 201901 | E | 9000 |
| 4 | 李四 | 201902 | A | 1800 |
| 5 | 李四 | 201902 | C | 1800 |
| 6 | 王五 | 201902 | C | 30000 |
| 7 | 王五 | 201902 | F | 30000 |
+------+--------+--------+-------+--------+
結果
+------+--------+--------+-------+--------+
| ID | NAME | MON | STATE | AMOUNT |
+------+--------+--------+-------+--------+
| 1 | 張三 | 201901 | A | 3000 |
| 2 | 張三 | 201901 | B | 3000 |
| 3 | 張三 | 201901 | E | 3000 |
| 4 | 李四 | 201902 | A | 900 |
| 5 | 李四 | 201902 | C | 900 |
| 6 | 王五 | 201902 | C | 15000 |
| 7 | 王五 | 201902 | F | 15000 |
+------+--------+--------+-------+--------+
SELECT ID,t.NAME,MON,STATE,ROUND(AMOUNT/t.C,0) AS AMOUNT
FROM T0120 LEFT JOIN
(
SELECT NAME,COUNT(*) AS C
FROM T0120
GROUP BY NAME,MON
)t
ON T0120.NAME = t.NAME
SELECT ID,NAME,MON,STATE,ROUND(AMOUNT/
(SELECT COUNT(1) FROM T0120 b WHERE a.MON = b.MON AND a.NAME = b.NAME)) AS AMOUNT
FROM T0120 a