2016-09-14 1 views
-1

Ich möchte Zeilen mehrmals in einer SQL-Anweisung auswählen, wo ich mehrere Werte nach der Auswahl zusammenfassen. Ich verwende PHP und PDO, um auf die MS SQL-Datenbank zuzugreifen.SQL multiplizieren oder selbe Zeilen mehrmals auswählen

Die Aufgabe ist so. Ich habe eine Tabelle mit Werten aus verschiedenen Lichtquellenmessungen. Die Tabelle sieht folgendermaßen aus:

id | measurement id | nm  | power 
n 1204   410.124 0.00254 
n 1204   410.856 0.00261 

Jede Messungs-ID hat 1024 Einträge in dieser Tabelle und ich habe ungefähr 1000 Messungen. Leider sind die 1024-nm-Werte für jede ID nicht identisch mit den Schritten zwischen ihnen. Daher kann ich diese Spalte nur zum Gruppieren oder Ordnen meiner Wertepaare verwenden.

Um neue Lichtquellen zu bauen, möchte ich verschiedene Messungen kombinieren können, indem ich die Leistung bei gleicher Wellenlänge (nm) summiere. Solange ich verschiedene Lichtquellen habe, ist das kein Problem, aber wenn ich eine Mess-ID mehrfach verwenden möchte, habe ich ein Problem.

Meine aktuelle Lösung ist eine temporäre Tabelle zu erstellen und für jede gewünschte Mess-ID von meinem Spektrum Tabelle nm und Leistung ein, bevor

SELECT nm, SUM(power) AS y FROM ##comboSpectrum GROUP BY nm ORDER BY nm 
DROP TABLE ##comboSpectrum 

tut Dies funktioniert, aber ich glaube, es ist nicht die beste Lösung ist. Zum Beispiel, wenn zwei Personen das Skript gleichzeitig ausführen. Werden sie beide temporäre Tabelle ## ComboSpectrum verwenden? Wenn dies der Fall ist, werden die Ergebnisse falsch sein.

Wäre es möglich, dasselbe mit einer Select-Anweisung zu erreichen? ZB mit Case-Anweisungen arbeiten und den Potenzwert multiplizieren, bevor er addiert wird?

Beispieldaten:

500,0842896 -0,000010101 
5000124 1204 248,9057312 0,000037438 
5000125 1204 249,7271881 0,000018394 
5000126 1204 250,548645 0 
5000127 1204 251,3701019 -0,000008565 
5000128 1204 252,1915436 0,000016259 
5000129 1204 253,0130005 0,000008049 
5000130 1204 253,8344574 0,000007549 
5000131 1204 254,655899 0,000022128 
5000132 1204 255,477356 0,000014156 
5000133 1204 256,2987976 0,000027791 
5000134 1204 257,1202698 0 
5000135 1204 257,9417114 0,000013444 
5000136 1204 258,7631836 -0,000006469 
5000137 1204 259,5846252 0,000012709 
5000138 1204 260,4060669 0,000018647 
5000139 1204 261,2275391 0,000006128 
5000140 1204 262,0489807 0,000030286 
5000141 1204 262,8704224 0,000018203 
5000142 1204 263,6918945 0 
5000143 1204 264,5133362 0,000017838 
5000144 1204 265,3347778 0,000011818 
5000145 1204 266,15625 0,000017661 
5000146 1204 266,9776917 0,000005932 
5000147 1204 267,7991638 0,00001745 
5000148 1204 268,6206055 0,000011536 
5000149 1204 269,4420471 0 
5000150 1204 270,2635193 0,000005681 
5000151 1204 271,0849609 0,000011423 
5000152 1204 271,9064026 0,000011599 
5000153 1204 272,7278748 0,000016681 
5000154 1204 273,5493164 0,00001088 
5000155 1204 274,3707886 0,000016109 
5000156 1204 275,1922302 0,000010505 
5000157 1204 276,0136719 0,000010559 
5000158 1204 276,835144 0,000015234 
5000159 1204 277,6565857 0,000009757 
5000160 1204 278,4780273 0,000014512 
5000161 1204 279,2994995 0 
5000162 1204 280,1209412 0,000008981 
5000163 1204 280,9423828 0,00001337 
5000164 1204 281,763855 0,000008747 
5000165 1204 282,5852966 0,000004204 
5000166 1204 283,4067688 0,000004086 
5000167 1204 284,2282104 0,00000802 
5000168 1204 285,0496521 0,000011415 
5000169 1204 285,8711243 0,000007481 
5000170 1204 286,6925659 0,000007102 
5000171 1204 287,5140076 0,000003427 
5000172 1204 288,3354797 0,000003332 
5000173 1204 289,1569214 0,00000316 
5000174 1204 289,978363 0,000003084 
5000175 1204 290,7998352 0,000008792 
5000176 1204 291,6212769 0,000008614 
5000177 1204 292,442749 0,000005562 
5000178 1204 293,2641907 0,000005343 
5000179 1204 294,0856323 0,000007785 
5000180 1204 294,9071045 0,000002552 
5000181 1204 295,7285461 0,000002479 
5000182 1204 296,5499878 0 
5000183 1204 297,3653564 -0,000004736 
5000184 1204 298,1806946 0,000004612 
5000185 1204 298,9960632 0,0000045 
5000186 1204 299,8114014 0,000002196 
5000187 1204 300,6267395 0 
5000188 1204 301,4421082 0,000002098 
5000189 1204 302,2574463 0,000006187 
5000190 1204 303,0727844 0 
5000191 1204 303,8881531 0,000003945 
5000192 1204 304,7034912 0,000001932 
5000193 1204 305,5188293 0,00000189 
5000194 1204 306,334198 0 
5000195 1204 307,1495361 0,00000363 
5000196 1204 307,9649048 -0,000001799 
5000197 1204 308,7802429 0,000001777 
5000198 1204 309,5955811 0 
5000199 1204 310,4109497 0 
5000200 1204 311,2262878 0,000005026 
5000201 1204 312,041626 0,000004961 
5000202 1204 312,8569946 0 
5000203 1204 313,6723328 -0,000001603 
5000204 1204 314,4877014 0,000003192 
5000205 1204 315,3030396 0,000001565 
5000206 1204 316,1183777 0,000001544 
5000207 1204 316,9337463 0,000003039 
5000208 1204 317,7490845 0,000003011 
5000209 1204 318,5644226 -0,000001484 
5000210 1204 319,3797913 0,000002938 
5000211 1204 320,1951294 0,000001452 
5000212 1204 321,0104675 0,000001432 
5000213 1204 321,8258362 -0,000002832 
5000214 1204 322,6411743 -0,000001417 
5000215 1204 323,456543 0 
5000216 1204 324,2718811 0 
5000217 1204 325,0872192 0,000002715 
5000218 1204 325,9025879 0,00000133 
5000219 1204 326,717926 0,000002658 
5000220 1204 327,5332642 0,000002617 
5000221 1204 328,3486328 0 
5000222 1204 329,1639709 -0,000002565 
5000223 1204 329,9793396 0,000002557 
5000224 1204 330,7946777 0,000002531 
5000225 1204 331,6100159 0,000001257 
5000226 1204 332,4253845 0 
5000227 1204 333,2407227 0,000003689 
5000228 1204 334,0560608 0,000004844 
5000229 1204 334,8714294 0,00000361 
5000230 1204 335,6867676 0 
5000231 1204 336,5021057 0,000002365 
5000232 1205 248,0842896 0,000002344 
5000233 1205 248,9057312 0,00000117 
5000234 1205 249,7271881 0,00000231 
5000235 1205 250,548645 0,000001151 
5000236 1205 251,3701019 0,000001142 
5000237 1205 252,1915436 0,000003401 
5000238 1205 253,0130005 0,00000337 
5000239 1205 253,8344574 0,00000561 
5000240 1205 254,655899 0,000003356 
5000241 1205 255,477356 0,000004413 
5000242 1205 256,2987976 0,000002212 
5000243 1205 257,1202698 0,000004393 
5000244 1205 257,9417114 0,000004381 
5000245 1205 258,7631836 0,000001089 
5000246 1205 259,5846252 0,000003257 
5000247 1205 260,4060669 0,000002164 
5000248 1205 261,2275391 0,000003247 
5000249 1205 262,0489807 0,000002155 
5000250 1205 262,8704224 0,000003247 
5000251 1205 263,6918945 0,000002168 
5000252 1205 264,5133362 0,00000325 
5000253 1205 265,3347778 0,000003237 
5000254 1205 266,15625 0,000002156 
5000255 1205 266,9776917 0,000004322 
5000256 1205 267,7991638 0,000002161 
5000257 1205 268,6206055 0,000004327 
5000258 1205 269,4420471 0,00000433 
5000259 1205 270,2635193 0,000004314 
5000260 1205 271,0849609 0,000002156 
5000261 1205 271,9064026 0,000003215 
5000262 1205 272,7278748 0,000004321 
5000263 1205 273,5493164 0,000004314 
5000264 1205 274,3707886 0,000004313 
5000265 1205 275,1922302 0,000005381 
5000266 1205 276,0136719 0,000003215 
5000267 1205 276,835144 0,000002151 
5000268 1205 277,6565857 0,000005339 
5000269 1205 278,4780273 0,0000032 
5000270 1205 279,2994995 0,000004231 
5000271 1205 280,1209412 0,000004208 
5000272 1205 280,9423828 0,000007314 
5000273 1205 281,763855 0,000004138 
5000274 1205 282,5852966 0,000002074 
5000275 1205 283,4067688 0,000006141 
5000276 1205 284,2282104 0,000004054 
5000277 1205 285,0496521 0,000003008 
5000278 1205 285,8711243 0,000004974 
5000279 1205 286,6925659 0,000003962 
5000280 1205 287,5140076 0,000002955 
5000281 1205 288,3354797 0,00000488 
5000282 1205 289,1569214 0,000004823 
5000283 1205 289,978363 0,000002871 
5000284 1205 290,7998352 0,000003788 
5000285 1205 291,6212769 0,000003729 
5000286 1205 292,442749 0,000001845 
5000287 1205 293,2641907 0,000005485 
5000288 1205 294,0856323 0,000003579 
5000289 1205 294,9071045 0,000004418 
5000290 1205 295,7285461 0,000003506 
5000291 1205 296,5499878 0,000003448 
5000292 1205 297,3653564 0,000005107 
5000293 1205 298,1806946 0,000005062 
5000294 1205 298,9960632 0,000005011 
5000295 1205 299,8114014 0,000007403 
5000296 1205 300,6267395 0,000005707 
5000297 1205 301,4421082 0,000005656 
5000298 1205 302,2574463 0,000004787 
5000299 1205 303,0727844 0,000003971 
5000300 1205 303,8881531 0,000006265 
5000301 1205 304,7034912 0,000004673 
5000302 1205 305,5188293 0,000003839 
5000303 1205 306,334198 0,000006089 
5000304 1205 307,1495361 0,000006764 
5000305 1205 307,9649048 0,000005213 
5000306 1205 308,7802429 0,00000513 
5000307 1205 309,5955811 0,000005066 
5000308 1205 310,4109497 0,000005757 
5000309 1205 311,2262878 0,000006402 
5000310 1205 312,041626 0,000006324 
5000311 1205 312,8569946 0,000007636 
5000312 1205 313,6723328 0,000008907 
5000313 1205 314,4877014 0,0000081 
5000314 1205 315,3030396 0,000008009 
5000315 1205 316,1183777 0,00000724 
5000316 1205 316,9337463 0,000009744 
5000317 1205 317,7490845 0,000008977 
5000318 1205 318,5644226 0,000007596 
5000319 1205 319,3797913 0,000010622 
5000320 1205 320,1951294 0,000011738 
5000321 1205 321,0104675 0,000011533 
5000322 1205 321,8258362 0,000012564 
5000323 1205 322,6411743 0,00001479 
5000324 1205 323,456543 0,00001575 
5000325 1205 324,2718811 0,000016079 
5000326 1205 325,0872192 0,000018664 
5000327 1205 325,9025879 0,000020635 
5000328 1205 326,717926 0,000022135 
5000329 1205 327,5332642 0,000025731 
5000330 1205 328,3486328 0,000027713 
5000331 1205 329,1639709 0,000030142 
5000332 1205 329,9793396 0,000035117 
5000333 1205 330,7946777 0,000041044 
5000334 1205 331,6100159 0,000045374 
5000335 1205 332,4253845 0,000050943 
5000336 1205 333,2407227 0,0000561 
5000337 1205 334,0560608 0,000062877 
5000338 1205 334,8714294 0,00007168 
5000339 1205 335,6867676 0,000078967 
5000340 1205 336,5021057 0,000093027 
5000341 1206 248,0842896 0,000100567 
5000342 1206 248,9057312 0,000115866 
5000343 1206 249,7271881 0,000131568 
5000344 1206 250,548645 0,000146755 
5000345 1206 251,3701019 0,000168325 
5000346 1206 252,1915436 0,000191148 
5000347 1206 253,0130005 0,000217963 
5000348 1206 253,8344574 0,000247424 
5000349 1206 254,655899 0,000278632 
5000350 1206 255,477356 0,000311273 
5000351 1206 256,2987976 0,000348165 
5000352 1206 257,1202698 0,000400241 
5000353 1206 257,9417114 0,000441524 
5000354 1206 258,7631836 0,000502269 
5000355 1206 259,5846252 0,000561231 
5000356 1206 260,4060669 0,000628418 
5000357 1206 261,2275391 0,000704633 
5000358 1206 262,0489807 0,000792944 
5000359 1206 262,8704224 0,000879226 
5000360 1206 263,6918945 0,000983874 
5000361 1206 264,5133362 0,001099216 
5000362 1206 265,3347778 0,001223394 
5000363 1206 266,15625 0,001372941 
5000364 1206 266,9776917 0,001535219 
5000365 1206 267,7991638 0,001698437 
5000366 1206 268,6206055 0,001902104 
5000367 1206 269,4420471 0,00212467 
5000368 1206 270,2635193 0,002343423 
5000369 1206 271,0849609 0,002606709 
5000370 1206 271,9064026 0,00288795 
5000371 1206 272,7278748 0,003167631 
5000372 1206 273,5493164 0,003460616 
5000373 1206 274,3707886 0,003755671 
5000374 1206 275,1922302 0,004057916 
5000375 1206 276,0136719 0,004328852 
5000376 1206 276,835144 0,004615742 
5000377 1206 277,6565857 0,004855209 
5000378 1206 278,4780273 0,005035959 
5000379 1206 279,2994995 0,005188211 
5000380 1206 280,1209412 0,005261329 
5000381 1206 280,9423828 0,00528759 
5000382 1206 281,763855 0,005269467 
5000383 1206 282,5852966 0,005187173 
5000384 1206 283,4067688 0,005032603 
5000385 1206 284,2282104 0,004837011 
5000386 1206 285,0496521 0,004611496 
5000387 1206 285,8711243 0,004347687 
5000388 1206 286,6925659 0,004081145 
5000389 1206 287,5140076 0,003808919 
5000390 1206 288,3354797 0,003540508 
5000391 1206 289,1569214 0,003291868 
5000392 1206 289,978363 0,003068167 
5000393 1206 290,7998352 0,002841762 
5000394 1206 291,6212769 0,002650539 
5000395 1206 292,442749 0,002458388 
5000396 1206 293,2641907 0,002308998 
5000397 1206 294,0856323 0,002158462 
5000398 1206 294,9071045 0,002031111 
5000399 1206 295,7285461 0,001915987 
5000400 1206 296,5499878 0,001792954 
5000401 1206 297,3653564 0,001677095 
5000402 1206 298,1806946 0,001573485 
5000403 1206 298,9960632 0,001466364 
5000404 1206 299,8114014 0,001361991 
5000405 1206 300,6267395 0,001270039 
5000406 1206 301,4421082 0,001177415 
5000407 1206 302,2574463 0,001084366 
5000408 1206 303,0727844 0,001011276 
5000409 1206 303,8881531 0,00092718 
5000410 1206 304,7034912 0,000845056 
5000411 1206 305,5188293 0,000785061 
5000412 1206 306,334198 0,000719093 
5000413 1206 307,1495361 0,000663353 
5000414 1206 307,9649048 0,000614924 
5000415 1206 308,7802429 0,000570489 
5000416 1206 309,5955811 0,000523586 
5000417 1206 310,4109497 0,000486469 
5000418 1206 311,2262878 0,00044564 
5000419 1206 312,041626 0,000423866 
5000420 1206 312,8569946 0,000396307 
5000421 1206 313,6723328 0,000365052 
5000422 1206 314,4877014 0,000346589 
5000423 1206 315,3030396 0,000325158 
5000424 1206 316,1183777 0,000299503 
5000425 1206 316,9337463 0,000281245 
5000426 1206 317,7490845 0,000264968 
5000427 1206 318,5644226 0,000244912 
5000428 1206 319,3797913 0,000228491 
5000429 1206 320,1951294 0,000214978 
5000430 1206 321,0104675 0,00019894 
5000431 1206 321,8258362 0,000184469 
5000432 1206 322,6411743 0,000171499 
5000433 1206 323,456543 0,00016148 
5000434 1206 324,2718811 0,000152085 
5000435 1206 325,0872192 0,000143848 
5000436 1206 325,9025879 0,000132747 
5000437 1206 326,717926 0,00012418 
5000438 1206 327,5332642 0,000117658 
5000439 1206 328,3486328 0,000111127 
5000440 1206 329,1639709 0,000104628 
5000441 1206 329,9793396 0,000101378 
5000442 1206 330,7946777 0,000094757 
5000443 1206 331,6100159 0,000093066 
5000444 1206 332,4253845 0,000087199 
5000445 1206 333,2407227 0,000086613 
5000446 1206 334,0560608 0,000081325 
5000447 1206 334,8714294 0,000080125 
5000448 1206 335,6867676 0,000075521 
5000449 1206 336,5021057 0,000071491 
+2

Fügen Sie weitere Beispieltabellendaten hinzu, und es wird erwartet, Ergebnis! – jarlh

+2

Welches DBMS benutzen Sie? (** Jede ** relationale Datenbank ist eine "SQL-Datenbank") –

+0

Die Datenbank befindet sich auf einem MS SQL Server. – Sikarjan

Antwort

1

Wenn Sie für jedes measurement_id/nm Paar einen beliebigen Leistungswert auswählen möchten, können Sie row_number() verwenden. Ich denke, die resultierende Abfrage lautet etwa so:

select nm, avg(power) 
from (select t.*, 
      row_number() over (partition by measurement_id, nm order by newid()) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
Verwandte Themen