聊聊sql——内查询示例2

本文通过一个实例介绍SQL内连接查询。

建表

1
2
3
4
5
CREATE TABLE `val_data` (
`id` bigint(10) NOT NULL AUTO_INCREMENT,
`cnt` int(8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据

id cnt
1 10000
2 5000
3 3000
4 1500
5 600
7 200

须统计数据

id cnt rate rate1
1 10000 1
2 5000 0.5 0.5
3 3000 0.3 0.6
4 1500 0.15 0.5
5 600 0.6 0.4
6 200 0.2 0.333

SQL查询

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
X.id,
X.cnt,
X.rate,
X.cnt/Y.cnt as rate1
FROM
(
SELECT
A.id, A.cnt, A.cnt/B.cnt AS rate
FROM val_data A INNER JOIN val_data B WHERE B.id =1
) X
LEFT JOIN val_data Y ON X.id-1=Y.id