我想實現的目標:
我有一張表格,表示每個ID的ID和Credits。
我想爲每個ID爲,rate(ID)=Credit(ID)/sum(Credit(ID))
總和超過所有ID
我會相當頻繁更新的表,並希望通過創建另一列,並在表中存儲此總和保持sum(Credit(ID))
方便(比如sigmaID
)其中對於所有行應始終具有完全相同的值。
每當我改變信用爲ID(比如加100),我可以簡單地做此列的值相同的操作(加100)sql所有行的列值相同,並且頻繁更新
- 我必須更新
sigmaID
所有行?它會有效嗎? - 我想定期檢查一下,如果
sigmaID
的確是sum(Credit(ID))
的一致性,我是否過度使用它?它效率低下嗎? - 有沒有其他方法(我擔心效率)?
請提供純SQL查詢,因爲我需要把所有這一切都在UPDATE
觸發這將計算該等級(以及ID的其他參數其他公式的負荷)。我可能有權訪問腳本語言(PHP/python),但我不確定。因此,純粹的SQL請求。
我的經驗並不讓我有權力說話,但它很可能是,你可以通過使用標[功能](HTTP實現你的目標:// msdn.microsoft.com/en-us/library/ms189593.aspx)來計算總和和持久[計算列](http://msdn.microsoft.com/zh-cn/library/ms191250.aspx)以分配結果。 –
@ andriy-m:感謝您的鏈接,計算列的東西看起來很有前途,它僅限於MSSQL,還是我可以在mysql/other sql中使用它? – Sudhi
無法說明該功能是否僅限於SQL Server,但[本源文件](http://www.postgresonline.com/journal/archives/51-Cross-Compare-of-SQL-Server,-MySQL, -and-PostgreSQL.html)顯示,至少有兩個特定的服務器產品MySQL和PostgreSQL *不支持計算列(或者,當時並不支持)。 –