SQL实现占比2种语法(时间函数升级版)

之前博文中写过一篇 《SQL实现占比、同比、环比指标分析》 其中列举了mysql和oracle实现占比的两种方式,分别使用on1=1和cross join

之前博文中写过一篇

《SQL实现占比、同比、环比指标分析》

其中列举了mysql和oracle实现占比的两种方式,分别使用on1=1和cross join 实现笛卡尔积。
基本语法如下

SELECT`status`,number,concat(round(number / total * 100.00, 2), '%') percent
FROM(SELECT*FROM(SELECT`status`,COUNT(1) numberFROM`user_tasks`GROUP BY`status`) t1INNER JOIN(SELECTCOUNT(1) totalFROM`user_tasks`) t2 ON 1 = 1

基本这种操作可以应对大部分的占比求值, 但是当使用时间进行分组求占比的时候就需要注意了

例如下面的例子

创建数据库并插入数据
CREATE TABLE `order` (`order_id` int(11) NOT NULL,`order_time` datetime DEFAULT NU