日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql avg 时间_MySQL或Rails在特定日期范围内每天获得AVG的最佳方式

發(fā)布時(shí)間:2025/3/21 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql avg 时间_MySQL或Rails在特定日期范围内每天获得AVG的最佳方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

是否有原因(除了已經(jīng)提到的日期之外)為什么不使用ActiveRecord中的內(nèi)置組功能?您似乎關(guān)注“后期處理”,我認(rèn)為這并不值得擔(dān)心.

你在Rails中,所以你應(yīng)該首先尋找一個(gè)Rails解決方案[1].我的第一個(gè)想法是做類似的事情

Product.average(:sales_price,:group => "DATE(created_at)",:conditions => ["merchant_id=?",1])

哪個(gè)ActiveRecord變成了你描述的sql.假設(shè)Merchant和Product之間有一個(gè)聲明的has_many關(guān)聯(lián),那么你可能會更好地使用它,所以類似于:

ave_prices = Merchant.find(1).products.average(:sales_price,:group => "DATE(created_at)")

(我希望您對模型的描述為“products_sold”是某種轉(zhuǎn)錄錯(cuò)誤,順便說一下 – 如果沒有,您的課程命名就會有點(diǎn)消息!)

畢竟,你回到了開始的地方,但是你以更傳統(tǒng)的Rails方式到達(dá)那里(Rails真的很重視慣例!).現(xiàn)在我們需要填補(bǔ)空白.

我假設(shè)你知道你的日期范圍,讓我們說它被定義為從from_date到to_date的所有日期.

date_aves = (from_date..to_date).map{|dt| [dt,0]}

這會將完整的日期列表構(gòu)建為數(shù)組.我們不需要得到平均值的日期:

ave_price_dates = ave_prices.collect{|ave_price| ave_price[0]} # build an array of dates

date_aves.delete_if { |dt| ave_price.dates.index(dt[0]) } # remove zero entries for dates retrieved from DB

date_aves.concat(ave_prices) # add the query results

date_aves.sort_by{|ave| ave[0] } # sort by date

這一批看起來有點(diǎn)混亂:我認(rèn)為它可能更溫和,更清潔.我正在研究構(gòu)建一個(gè)Hash或Struct,而不是留在數(shù)組中.

[1]我并不是說不使用sql – 在ActiveRecord無法生成最有效查詢的情況下會發(fā)生這種情況,并且您會依賴于find_by_sql.這很好,它應(yīng)該是這樣的,但我認(rèn)為你應(yīng)該嘗試使用它作為最后的手段.

總結(jié)

以上是生活随笔為你收集整理的mysql avg 时间_MySQL或Rails在特定日期范围内每天获得AVG的最佳方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。