对Orders订单表中的常见统计查询:
该表包含的的信息: 订单编号,顾客编号,备注等
1 查询Order表中的所有订单的总数
SELECT COUNT(*)
FROM Orders
返回结果可能是:
--------
15
问题: 可读性太差
思路: 添加说明
方法: 给查询结果添加一个列名
代码:
SELECT COUNT(*) AS order_sum
FROM Orders
返回结果如下:
order_sum
----------
15
2 查询Order表中的顾客100001的所有的订单的总数
SELECT COUNT(*)
FROM Orders
WHERE cust_id = '100001'
结果:
--------
2
问题:可读性差
思路:给查询结果添加注明,既注明查询结果,又注明顾客
方法:给结果添加顾客编号列和结果说明列(AS xxx_xx)
代码:
SELECT cust_id,COUNT(*) AS order_sum
FROM Orders
WHERE cust_id = '100001'
返回结果:
cust_id order_sum
-------- ----------
100001 2
3 查询Order表中顾客100003的所有订单的总数
SELECT COUNT(*)
FROM Orders
WHERE cust_id = '100003'
结果:同上
问题:同上
思路:同上
方法:同上
代码:同上
4查询Orders表中100001和100002的所有订单总数
SELECT COUNT(*)
FROM Orders
WHERE cust_id IN('100001','100002')
结果:
-------
2
3
问题:同上
思路:给所有结果添加说明列,给每个结果添加顾客说明列
方法:AS xxx;cust_id
代码:
SELECT cust_id,COUNT(*) AS order_sum
FROM Orders
WHERE cust_id IN('100001','100002')
结果:
cust_id order_sum
------- ----------
100001 2
100002 3
5 查询Order表中顾客表中每一位顾客的所有订单总数
SELECT COUNT(*)
FROM Orders
WHERE Order.cust_id = Customers.cust_id
结果:
-----
2
3
问题:同上
思路:给所有结果添加说明列 给每个结果添加顾客信息列
方法:给查询结果来个AS xxx
然后再另一张Customer表中查询顾客信息列
代码:
SELECT cust_id,cust_name,cust_sex
(SELECT COUNT(*)
FROM Orders
WHERE Order.cust_id = Customers.cust_id) AS order_sum
FROM Customers
结果
cust_id cust_name cust_sex order_sum
------- --------- --------- ----------
100001 lucy female 2
100002 nancy female 3
任何复杂的问题
如果你能够将其
分解成简单的问题
并且能理清楚
问题由简单变复杂的过程
再复杂也能轻松理解和解决
简单的问题做加法
问题将会变复杂
复杂的问题做减法
问题就会变简单
把复杂当做简单
之后
意味着
越来越强大