题目
手写 SQL:有一张订单表,status 字段表示某个订单的状态,如何查询出各个状态的百分比
答案
假设有一张订单表: ```sql CREATE TABLE orders ( id INT PRIMARY KEY, status INT ); ``` 查询出各个状态的百分比: ```sql SELECT status, COUNT(*) AS cnt, ROUND(COUNT(*) * 100 / (SELECT COUNT(*) FROM orders), 2) AS percent FROM orders GROUP BY stats; ``` **重点就在于使用子查询 `SELECT COUNT(*) FROM orders` 来获取整张表的总行数,如果直接用 `COUNT(*)` 获取到的是每个分组的总行数**。