node.js - mysql如何通過knex查詢今天和七天內(nèi)的匯總數(shù)據(jù)
問題描述
具體實現(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里面我這樣寫根本不對
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也不對,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好像復雜化了(原SQL會對createdAt字段進行運算,有可能會讓該字段的索引失效)。
SELECT sum(inputer) AS product_num FROM `product`WHERE createdAt >= ?
通過程序計算出今天、七天前和三十天前的起始時間(即yyyy-MM-dd 00:00:00),然后代入SQL即可。
相關(guān)文章:
1. boot2docker無法啟動2. java - SSH框架中寫分頁時service層中不能注入分頁類3. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.4. node.js - antdesign怎么集合react-redux對input控件進行初始化賦值5. 關(guān)于docker下的nginx壓力測試6. docker-compose中volumes的問題7. 老師,按tab鍵不起作用怎么回事8. mac里的docker如何命令行開啟呢?9. java - Spring事務(wù)回滾問題10. docker - 如何修改運行中容器的配置

網(wǎng)公網(wǎng)安備