我正在用MySQL练习SQL,在SQL中遇到了一个奇怪的行为.假设我有一张这样的桌子:
Delivery table:
+-------------+-------------+------------+-----------------------------+
| delivery_id | customer_id | order_date | customer_pref_delivery_date |
+-------------+-------------+------------+-----------------------------+
| 1 | 1 | 2019-08-01 | 2019-08-02 |
| 2 | 5 | 2019-08-02 | 2019-08-02 |
| 3 | 1 | 2019-08-11 | 2019-08-11 |
| 4 | 3 | 2019-08-24 | 2019-08-26 |
| 5 | 4 | 2019-08-21 | 2019-08-22 |
| 6 | 2 | 2019-08-11 | 2019-08-13 |
+-------------+-------------+------------+-----------------------------+
我的问题是:
SELECT COUNT(*) as imm, count(*) over() as all_t
FROM
Delivery
WHERE order_date = customer_pref_delivery_date
结果:
+-----+-------+
| imm | all_t |
+-----+-------+
| 2 | 1 |
+-----+-------+
我希望over()函数将覆盖整个表,在本例中返回6,但出于某种原因,它只返回1.这种行为有什么解释吗?