SQL多次乘法或选择相同的行

时间:2016-09-14 09:01:41

标签: sql sql-server

我想在SQL语句中多次选择行,在选择它们之后我总结了几个值。我正在使用php和PDO访问MS SQL数据库。

任务就是这样。我有一张表格,里面有不同光源测量值。该表如下所示:

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

每个测量ID在此表中有1024个条目,我有大约1000个测量值。不幸的是,每个id的1024 nm值与它们之间的步骤不同。所以除了分组或命名我的值对之外,我不能使用这个列。

为了构建新的光源,我希望能够通过总计相等波长(nm)的功率来组合不同的测量。只要我有不同的光源,这不是问题,但如果我想多次使用一个测量ID,我就会遇到问题。

我目前的解决方案是创建一个临时表,并在执行之前为我的频谱表中的每个请求的测量ID插入nm和功率

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

这有效,但我相信这不是最好的解决方案。例如,如果两个人同时运行脚本会怎么样。他们都会使用临时表## comboSpectrum吗?如果是这样,结果将是错误的。

是否可以使用一个select语句完成相同的操作?例如,使用case语句并在求和之前乘以功率值?

示例数据:

5000123 1204    248,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

1 个答案:

答案 0 :(得分:1)

如果要为每个measurement_id / nm对选择一个任意功率值,可以使用row_number()。我认为结果查询是这样的:

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;