我們平時開發中偶爾會遇到統計,但是有時候根據時間統計的時候,有些時間內資料為空,這時候我們前端的開發人員不知道具體是那一天(或者別的時間點),這個時候我們需要一張時間的輔助表 ,通過和時間輔助表聯查獲得那一天資料為空的時間
1:建表
drop table if exists `t_calendar_auxiliary`;
create table `t_calendar_auxiliary` (
`i` int(11) default null
) engine=innodb default charset=utf8 comment='日曆輔助表';
2:往表裡面新增資料
-- records of t_calendar_auxiliary
insert into `t_calendar_auxiliary` values ('0');
insert into `t_calendar_auxiliary` values ('1');
insert into `t_calendar_auxiliary` values ('2');
insert into `t_calendar_auxiliary` values ('3');
insert into `t_calendar_auxiliary` values ('4');
insert into `t_calendar_auxiliary` values ('5');
insert into `t_calendar_auxiliary` values ('6');
insert into `t_calendar_auxiliary` values ('7');
insert into `t_calendar_auxiliary` values ('8');
insert into `t_calendar_auxiliary` values ('9');
3:通過cross join(笛卡爾乘積) 將兩個表乘起來
select
adddate( '2018-09-01', numlist.id ) as date_day
from
(select
n1.i + n10.i * 10 + n100.i * 100 as id
from
t_calendar_auxiliary n1
cross join t_calendar_auxiliary as n10
cross join t_calendar_auxiliary as n100
) as numlist
where
adddate( '2018-09-01', numlist.id ) <= '2018-09-07'
4:返回結果:
5,通過開始時間和結束時間往時間輔助表裡面新增資料
先確定資料要用到哪些表。
將多個表先通過笛卡爾積變成乙個表。
然後去除不符合邏輯的資料(根據兩個表的關係去掉)。
最後當做是乙個虛擬表一樣來加上條件即可。
mysql 根據條件統計資料量
目錄 需求 統計總數,未完成數和完成數 方法一 方法二 總結 create table test task id int 11 not null auto increment,done tinyint 1 default null comment 是否完成 donetime int 11 defau...
mysql按周統計資料
主要就是使用date format這個方法 select date format createtime,y u weeks,count count from user group by weeks order by weeks desc u 周 00 53 星期日是一周的第一天 u 周 00 53 ...
MySQL列轉行統計資料
筆者在開發的過程中遇到了這樣的問題。其中item id是固定的字典。值是死的。其中item id 等於 1,2,3的值是每乙個work quoted id都需要相乘的。相當於乙份訂單人工費和施工人數以及施工天數都是一定存在的並且是相乘的關係。其他的item id的值是需要相加的。所以,運算的規則是 ...