我正在努力计算所有具有相同时间戳的值。我的数据库是这样的:假设我想得到2013年5月的订单数量。正确的语法是什么?
mcdcgff01#
要获得时间戳范围的计数,我们可以将时间戳列与下限和上限进行比较,例如:
SELECT COUNT(*) FROM mytable t WHERE t.orderdate >= '2013-05-01 00:00:00' AND t.orderdate < '2013-06-01 00:00:00'
(5月1日前后至6月1日前所有订单)我们也可以在选择列表中的表达式中进行类似的比较,条件聚合模式:
SELECT SUM(IF(t.orderdate >= '2013-05-01' AND t.orderdate < '2013-06-01',1,0)) AS cnt_may FROM mytable t
等价地
SELECT SUM(CASE WHEN DATE_FORMAT(t.orderdate,'%Y-%m') = '2013-05' THEN 1 ELSE 0 END) AS cnt_may FROM mytable t
请注意,第一个查询(在 orderdate 列)可以利用具有 orderdate 作为前导列,执行有效的范围扫描操作。
orderdate
1条答案
按热度按时间mcdcgff01#
要获得时间戳范围的计数,我们可以将时间戳列与下限和上限进行比较,例如:
(5月1日前后至6月1日前所有订单)
我们也可以在选择列表中的表达式中进行类似的比较,条件聚合模式:
等价地
请注意,第一个查询(在
orderdate
列)可以利用具有orderdate
作为前导列,执行有效的范围扫描操作。