查詢每月每天的訂單總數與訂單金額並補全日期

2021-08-15 13:50:48 字數 3675 閱讀 6089

本人也是菜鳥級別的。前一段時間做乙個專案。遇到了乙個需求。客戶選擇月月份,就會把選擇的月份的每天所有訂單的總數或者金額返回給前端。但是遇到了乙個問題,比如,1月2號,沒有訂單的話,那就沒有1月2號的字段。也沒有訂單總數與金額。但是前端需要。沒有的話前端不好展示,要補齊日期,總數與金額設定為0。查了很多方法。都不盡人意,自己嘗試寫了,也算實現了。對於日期,有一種簡單的方法,就是建乙個時間表,連表查詢。我是根據前端創過來的時間段後端自己組裝時間。

mysql自己網上看了別人的寫的,有點複雜。其實想想可以用開始時間與結束時間來查。但是只要效果有了。我也就沒有改。

<

selectid="selectorderbymoney"resulttype="com.rbu.entity.extention.orderenyitymodel">

select

sum(t.totalmoney) as totalmoney ,substr(t.deducttime, 1, 10) as monthday

from(select deduct.deduct_time as deducttime,deduct.deduct_money as totalmoney from custom_order as cd

left join deduct on cd.order_id = deduct.order_id

where deduct.user_id = #

group by deduct.order_id ) t

where t.deducttime like concat( #,'%')

group by

substr(t.deducttime, 1, 10)

select>

totalmoney是每月每天的總金額字段,monthday是時間字段。
<

selectid="selectorderbynumber"resulttype="com.rbu.entity.extention.orderenyitymodel">

select

count(*) as orderstotal,

substr(t.deducttime, 1, 10) as monthday

from

(select

cd.order_id,

cd.order_no,

cd.user_id,

deduct.deduct_time as deducttime,

deduct.deduct_money as money

from

custom_order as cd

left join deduct on cd.order_id = deduct.order_id

where deduct.user_id = #

group by

deduct.order_id

) twhere

t.deducttime like concat( #,'%')

group by

substr(t.deducttime, 1, 10)

select>

orderstotal是每月每天的訂單的總數,

monthday是時間字段。

主要的來了。
/**

* 得到乙個月多少天

*@param

date

*@return

*/public static intgetdaynum(string date)

調這個方法傳入引數比如「2017-08」,就可以等到2023年8月一共多少天。

下面這一段是

得到每月每天訂單的金額

intdays = createsessionutil.getdaynum(date);//某年某月的天數。date引數是前端傳給我的時間。

string mday =newstring[days];//建立乙個時間陣列

string strs = date.split("-");//通過「-」把時間擷取成乙個陣列

string years = strs[0];//得到年

string month = strs[1];//得到月

bigdecimal bigdecimal =newbigdecimal(0);//這個是用來給總金額賦值的。為0

listlist =newarraylist(days);//這個集合是用來裝返回給前端的資料的

.selectorderbymoney(date,userid);//這個是我資料庫去查出來的資料

for(inti = 0; i < days; i++)else

for(orderenyitymodel oe: orderenyitymodels)

}

list.add(enyitymodel);//把賦值的物件給加入集合
}

下面的是算每月每天訂單的總數。我就不給注釋,都差不多

intdays = createsessionutil.getdaynum(date);//某年某月的天數

string mday =newstring[days];

string strs = date.split("-");

string years = strs[0];

string month = strs[1];

listlist =newarraylist(days);

//查出來的訂單總數

.selectorderbynumber(date,userid);

for(inti = 0; i < days; i++)else

for(orderenyitymodel oe: orderenyitymodels)

}

list.add(enyitymodel);
}
下面是查出來的資料,寫的不是很好。給一些像我一樣的菜鳥。

MySQL查詢 每年 每月 每日 訂單數和訂單金額

mysql函式 1.from unixtime 函式時間戳轉換時間 select from unixtime 1588238359 as 時間 2.year 獲取時間的年份 select year 2020 04 30 17 19 19 as 年 3.month 獲取時間的月份 select mon...

MySQL查詢 每年 每月 每日 訂單數和訂單金額

1.from unixtime 格式化mysql時間戳函式 select from unixtime 1610620290 y m d h i s as 時間 year 獲取時間的年份 select year 2021 01 14 18 31 30 as 年 month 獲取時間的月份 select...

Mysql查詢每天 每週 每月 每年的資料

查詢每天的資料 select count 1 as total,date format create time,y m d as time from op endor info group by date format create time,y m d 查詢每週的資料 select count 1...