Calculul suma cumulată pe baza datelor solicitate din baza de date

Rapoartele generate pe baza datelor stocate în baza de date, uneori, este necesar să se calculeze totalul cumulat. În cazul nostru, aceasta este diferența între o sută la sută, iar suma valorilor coloanelor ca procent din toate rândurile situate deasupra acestui. total cumulat pentru primul rând din setul comandat este egal cu 100%.

Există diferite moduri de a calcula suma valorilor liniei anterioare. Cu toate acestea, există importante tehnici utilizate pentru generarea de rapoarte, baze de date, versiunea sa.

1. Oferta ROWS + PESTE

În cazul nostru, pentru a susține funcționalitatea proiectului vechi folosind o versiune anterioară a MS SQL Server, apoi trebuie să apeleze la alte opțiuni de calcul. Pentru una dintre aceste opțiuni includ utilizarea de sub-interogări corelate.

2. subinterogare corelate

Corelat subinterogare - o subinterogare care conține un link către coloane constând din cererea sa (master). Astfel, interogării secundare corelate se efectuează pentru fiecare rând de interogare principal, ca interogare principale valorile coloanelor vor varia.

Interogarea reală cu care avem de-a face cu mult mai mult volum decât se arată în exemplul: procentele nu sunt stocate în baza de date, trebuie mai întâi să le calculeze pentru numărul de studenți numărate. Utilizarea subinterogările prea complicat cod corelată existent și reduce dramatic performanța interogare a bazei de date.

3. Utilizarea tehnologiei SQL CLR

În cazul nostru, vom aborda posibilitatea CLR-funcții. Tehnologia CRJ SQL ne permite să extindă funcționalitatea SQL Server folosind C #. În instanța de SQL Server, puteți crea o funcție care este programat într-un ansamblu creat în mediu platforma Microsoft .NET Framework CLR.

În statică C # unitatea CRJ-metoda de bază, vom obține într-un rezultat variabil al liniei solicitate de tip Generic.List. Înainte de a returna date de interogare pentru a afișa, bucla prin toate rândurile din listă și aștept cu nerăbdare să-i suma de interes din liniile anterioare folosind LINQ instrumente SQL:

Utilizarea SQL CLR pot crea scrise în limbi de mare proceduri stocate, triggere, definite de utilizator tipuri și funcții, precum și agregate. Acest lucru vă permite să îmbunătățească în mod serios performanțele și extinde funcționalitatea serverului la limite inimaginabile.