Используйте агрегатную функцию sum
и group by
поле Products_ID
, например :
select t.orderid, t.products_id, sum(t.quantity*t.[unit price]) as price
from YourTable t
group by t.orderid, t.products_id
Измените YourTable
на свое имя таблицы.
Я думаю, что ответ не находится в коде Python или функциях языка, но это находится в системных возможностях, рассмотрите это решение:
runcodes = ["script1.C", "script2.C"]
Args = []
for script in runcodes:
Args += " ".join(["root", "-l", "-q", script])
P = subprocess.Popen(" & ".join(Args))
P.wait()
Если ваша платформа не Windows, вы, вероятно, могли бы выбрать против stdout труб ваших подпроцессов. Тогда ваше приложение будет блокироваться до тех пор, пока либо:
Неполный пример использования epoll в Linux 2.6.xx:
import subprocess
import select
poller = select.epoll()
subprocs = {} #map stdout pipe's file descriptor to the Popen object
#spawn some processes
for i in xrange(5):
subproc = subprocess.Popen(["mylongrunningproc"], stdout=subprocess.PIPE)
subprocs[subproc.stdout.fileno()] = subproc
poller.register(subproc.stdout, select.EPOLLHUP)
#loop that polls until completion
while True:
for fd, flags in poller.poll(timeout=1): #never more than a second without a UI update
done_proc = subprocs[fd]
poller.unregister(fd)
print "this proc is done! blah blah blah"
... #do whatever
#print a reassuring spinning progress widget
...
#don't forget to break when all are done
Вы можете сделать что-то вроде этого:
runcodes = ["script1.C", "script2.C"]
ps = []
for script in runcodes:
args = ["root", "-l", "-q", script]
p = subprocess.Popen(args)
ps.append(p)
for p in ps:
p.wait()
Процессы будут выполняться параллельно, и вы будете ждать их всех в конце.
Как насчет
import os, subprocess runcodes = ["script1.C", "script2.C"] ps = {} for script in runcodes: args = ["root", "-l", "-q", script] p = subprocess.Popen(args) ps[p.pid] = p print "Waiting for %d processes..." % len(ps) while ps: pid, status = os.wait() if pid in ps: del ps[pid] print "Waiting for %d processes..." % len(ps)