node.js - mysql如何通過knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)
問題描述
具體實(shí)現(xiàn)是要在product表中查詢出今天、七天和三十天內(nèi)的產(chǎn)品數(shù)量,具體的sql語句已經(jīng)寫好了
select sum(inputer as productNum) from `product` where to_days(`createdAt`)= to_days(now());
但是在knex.js里面我這樣寫根本不對(duì)
return knex(’product’) .where({ inputer: user, deletedAt: null }) .andWhere(’to_days(add_time)’, ’=’, ’to_days(now())’) .sum(’inputer as productNum’) .then(function (productRow) { return { product: productRow }; })
用having也不對(duì),knex文檔里沒有看到聚合函數(shù)的使用方法,求指教
return knex(’product’) .where({ inputer: user, deletedAt: null }) .groupBy(id) .having(’to_days(add_time)’, ’=’, ’to_days(now())’) .sum(’inputer as productNum’) .then(function (productRow) { return { product: productRow }; })
問題解答
回答1:沒用過knex.js,但SQL好像復(fù)雜化了(原SQL會(huì)對(duì)createdAt字段進(jìn)行運(yùn)算,有可能會(huì)讓該字段的索引失效)。
SELECT sum(inputer) AS product_num FROM `product`WHERE createdAt >= ?
通過程序計(jì)算出今天、七天前和三十天前的起始時(shí)間(即yyyy-MM-dd 00:00:00),然后代入SQL即可。
相關(guān)文章:
1. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。2. javascript - Ajax加載Json時(shí),移動(dòng)端頁面向左上角縮小一截兒,加載完成后才正常顯示,這該如何解決?3. mysql - 記得以前在哪里看過一個(gè)估算時(shí)間的網(wǎng)站4. 更新mysql中被別人鎖定的行, 能不能快速失敗直接報(bào)錯(cuò), 而不是一直等待5. javascript - h5 video層級(jí)太高導(dǎo)致浮在div上面,如何解決?6. mysql刪除一個(gè)空數(shù)據(jù)庫報(bào)錯(cuò)Table storage engine for ’proc’ doe7. python運(yùn)行后沒有任何反饋要怎么排查8. python小白 想做一個(gè)能夠計(jì)算圓周率的代碼,不知道怎么寫9. javascript - 如何獲取未來元素的父元素在頁面中所有相同元素中是第幾個(gè)?10. javascript - 我的站點(diǎn)貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?
