我想在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
答案 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;