對IExpression聚合統計的擴充套件實現

2021-09-05 15:17:43 字數 1863 閱讀 2053

iexpression

是sql artisan

元件的條件描述介面,元件中使用的所有條件(包括組合條件)都是以

iexpression

體現出來。但現有版本中的

iexpression

只支援資料查詢、刪除和修改操作,對於聚合統計並沒有直接支援

,只能通過檢視物件的方式來描述聚合統計

;但這種方式需要描述實體使用不是很方便,因此產生對

iexpression

簡化聚合統計的想法。接下來為大家介紹以外部擴充套件的方式對

iexpression

實現資料聚合統計功能。

通過介面規範聚合統計的功能:

//////

資料統計描述介面

///

public

inte***ce istatistician

制定行為介面後就實現相關介面的物件

.因為明確統計的方式是基於條件的,所以介面實現類的預設建構函式必須具備

iexpression

引數物件。

//////資料統計處理物件

///

public

class statisticianbuilder:istatistician

private hfsoft.data.expressions.iexpression mexpression;

//////獲取統計的條件

///

public hfsoft.data.expressions.iexpression expression

} #region

istatistician 成員

public

int countof()

else }

}

int statistician.istatistician.countof(hfsoft.data.idatasession session)

public

else }

}

public

else }

}

public

else }

}

public

else }

}

#endregion

private

object onquery(idatasession session ,params fieldadapter fields)

return

null; }

}

就以上兩步就已經完成

iexpression

對聚合統計支援的擴充套件。接下來看一下擴充套件後的使用效果:

//例項訂單日期在1997-1-1之後的統計物件

istatistician stat = new statisticianbuilder(

//統計所有記錄數

stat.countof();

//例項訂單日期在1997-1-1之後的銷售明細統計物件

stat = new statisticianbuilder(

); //統計銷售產品總和

//統計銷售產品的平均**

因為以上擴充套件並沒有改變

iexpression

的任何實現,因此並不能完全基於條件驅動的方式進行操作,必須借助於

statisticianbuilder

來進行整合和處理。當修改

iexpression

繼承istatistician

介面就能發揮基於條件驅動的簡便操作方式。同樣以上擴充套件的聚合統計並不支援分組,因為分組返回的結果是多成員的,所以通過檢視物件描述會比較合理。

關於對聚合和組合的理解

今天看了看 深入php 物件導向 模式與實踐 第三版 其中看到 聚合 跟 組合 的概念,對此理解也比較模糊 文中是這樣說的 首先是聚合 created by phpstorm.classname aggregationa user jan date 14 9 12 time 下午12 18 link...

R Studio中對xls檔案學生總成績統計求和

我們發現這張xls 是沒有學生總分的,在xls檔案中計算學生總分嫌麻煩時,可以考慮在r studio中自定義r script指令碼來解決實際問題 計算每個學生的總成績 xls資料表中的資料 關鍵資訊姓名已進行塗鴉 讀取xls檔案方法及出現亂碼解決方法 傳送門 實現過程 讀取.xls檔案,先找到要讀取...

mysql一對多怎麼聚合多 mysql多對多

中間表跟兩張表都分別是一對多關係,中間表是多,兩張表分別是1.原因是乙個教師在中間表中可以有多個t id 教師t id 而乙個t id只能對應乙個教師。2.外來鍵可以是一對一的,乙個表的記錄只能與另乙個表的一條記錄連線,或者是一對多的,乙個表的記錄與另乙個表的多條記錄連線。1.一對多,在多的一方建立...