Potrzebuję kogoś z ponadpodstawową znajomością SQL (a przynajmniej większą niƶ moja)

Załóƶmy, ƶe mam tablicę z kolumnami

foo
i

bar
. Chciałbym policzyć średnie wartości dla kaƶdej unikalnej wartości

foo
. Umiem to zrobić wymieniając explicite wszystkie wartości, które mnie interesują, ale chciałbym, ƶeby to się automatycznie generowało.

Dla lepszego zobrazowania sytuacji, to jest to czego chcę uniknąć (ale daje wyniki poprawne):



SELECT
```**```
 
``````
        (
```**```
SELECT
```**```
 
```**```
@msq: ale szok... wczoraj siedzę w zaciszu porcelany i przeglądam Mirko. Coś mnie tknęło, żeby wejść na "mój wykop" czego normalnie nie robię i patrzę a tam link taki ciekawy na samej górze. Ciekawy zbieg okoliczności ^^
#pytaniedoeksperta #python #sql #mysql

Hej, mam taki kod od jednego z uzytkownikow i chce go uzyc w mysql'u zeby porownac dwie kolumny.

def compare(a, b):

a = set(a.split())

b = set(b.split())

return '{0:.0f}%'.format(100.0*len(a.intersection(b))/len(a))

assert '100%' == compare('123 asd asd', 'asd 123')

assert '33%' == compare('a b c', 'c d e')

assert '0%' == compare('asd', 'xyz')

print compare('Leszek smieszkuje na mirko', 'na mirko Leszek smieszkuje')

Udalo mi sie napisac funkcje rozdzielajaca slowa, ale
@enef: Ale grupowanie dziala tylko z funkcajmi agregujacymi - SUM(), MAX(), AVG() i tak dalej.

Poza tym cochcesz osiagnac robiac UNION dwoch takich samych zapytan?

EDIT: A teraz widze ze to dodwoch roznych tabel :)

Co nie zmienia faktu ze takie 'grupowanie' nei ma wiekszego sensu.
@enef: Niezupelnie....

To jest taki 'feature' mysqla, raczej niezdrowy....

http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html

I to co sie pokazuje w innych kolumnach przy takim zastosowaniu jest losowe :) Jesli dobrze rozumiem dokumnetacje:

The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate. Furthermore, the selection of values from each group cannot be influenced by adding an ORDER BY clause

Co chcesz osiagnac?
#mysql #programowanie #pomocy #kiciochpyta

Ktoś pomoże napisać mi zapytanie?

Mam tabelę wyglądającą tak:

https://dl.dropboxusercontent.com/u/19585201/wykop/tabela1.PNG

A chcę żeby to wyglądało tak:

https://dl.dropboxusercontent.com/u/19585201/wykop/tabela2.PNG

Czyli chodzi o to, żeby dla każdej gruby IDProduktu ponumerowało mi kolejno kolumny IDMagazynu zaczynając od 1.

Próbowałem różnych sposobów i nawet całe stackoverflow przeszukałem ale nie znalazłem sposobu na to :<

Jak to zrobić nie wiem.
Ciężko tak naprawdę powiedzieć, choć oczywiście jest znacznie, znacznie wolniejsze niż natywne. tabela tymczasowa ma engine=memory. Sam report generuje się kilkanaście sekund (a czasami ponad minutę), więc istotne spowolnienie nie jest tak naprawdę bardzo odczuwalne :)

Dzisiaj już nie zdążę zrobić żadnych pomiarów, ale na pewno to zbadam :)

... w zasadzie ten kod, po niewielkich zmianach, można by upublicznić ...
Mam skrypt, który uaktualnia tabelę mysql na podstawie informacji z dogeapi.com. Proste. Później na podstawie danych z mysqla generowana jest treść na stronę. Jednak sprawdzanie zawartości stanu portfela przez api trwa długo i obawiam się, że przy dużej bazie userów 30 sekund to będzie za mało na dokończenie działania skryptu :P Jakieś wskazówki jak to zoptymalizować?

if(mysql*num*rows($wynik) > 0) {



while($r = mysql*fetch*assoc($wynik)) {


$dogeapi = $doge->get*address*received(array('payment*address' => $r['address'])); //sprawdzam ile dogecoinow
Mireczki mamy tu jakiegoś szpeca od MS Access? Jestem zmuszony utrzymywać w pracy bazę, którą ktoś kiedyś zrobił i teraz przy każdej zmianie czegoś na serwerach odbija mi się to czkawką, bo wiecznie coś się w niej sypie... Krótko: Mam bazę MySQL utrzymywaną na serwerze. Na niektórych stacjach mam poinstalowane sterowniki ODBC do tej bazy MySQL. Użytkownik otwiera plik .mdb, ma tam utworzony interfejs do zmiany wartości w tabelach bazy, drukowania kopert
[ #mysql #sql ]

mirki, z sql zazwyczaj nie mam problemu, ale chyba utkąłem.

w tabeli są dwie kolumny: godzina [time] i liczba [int]. pytanie: jak pogrupować dane po godzinie do dwóch stref czasowych 00:00:00 - 11:00:00 i 12:00:00 - 23:00:00 żeby zliczyć sumę liczb w obu tych zakresach godzin? przyświeca mi idea z podzapytaniem w leftjoin do samej sobie, ale skomplikowanie rozwiązania znacznie przewyższa wartość "projektu" ;)
@tomix: Przy takim przyroście to bez różnicy - każde rozwiązanie będzie dobre - i union i case. Ewentualnie możesz zrobić triggera on insert, który będzie ustawiał z automatu strefę czasową - odpytanie takiego widoku będzie szybsze (o ułamki sekund - mając na uwadze liczbę danych) i przeniesiesz kod na tabele. Ale to bardziej sztuka dla sztuki.

BTW - zamiast rozpisywać drugiego whena w case, możesz zrobić else.
W projekcie przechowuję dużo małych obrazków (powiedzmy że ikon) tworzonych przez użytkowników. Jest ich nawet po kilkadziesiąt na usera, wymiary ok 100x60px, format png, zajmują po kilka-kilkanaście KB.

Na początku trzymałem je w plikach, ale żeby zmniejszyć liczbę requestów zapisuję je jako base64. Obecnie trzymam to wszystko w bazie (tzn zakodowane base64, nie pliki :)), ale obawiam się, że wraz ze wzrostem liczby uzytkowników baza może tego nie przeżyć, tym bardziej, że
baza może tego nie przeżyć, tym bardziej, że jest to #mysql


@paffnucy: Bueh ehe he heee.... Taki duzy a takie rzeczy wygaduje :)

Co byście radzili, w jaki sposób przechowywać takie dane?


@paffnucy: System plikow.

http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay

Eventualnie nosql db do samych obrazkow. Jesli zalezy Ci na predkosci i masz duzo ramu to mozesz korzystac z prostego cache z uzyciem ram dysku.
SELECT YEAR(data) AS RokSprzedazy, COUNT(fakturaID) AS IloscDokumentow FROM faktury GROUP BY RokSprzedazy HAVING RokSprzedazy BETWEEN 2006 AND 2008


@singollo: W Mysql tak - dlatego tez....

Note that MySQL, unfortunately, doesn't adhere to this standard, causing nothing but confusion. Don't fall for MySQL's tricks. GROUP BY transforms table references. You can thus only reference columns also referenced in the GROUP BY clause.

W oraclu takie zapytanie

select (salary + 1) as SAL
You can thus only reference columns also referenced in the GROUP BY clause.


@msq: To nie jest do końca prawdziwe, nie trzeba pakować wszystkich kolumn które wybierasz do GROUP BY, SELECT a1, a2, max(b1) from a JOIN b ON (....) GROUP BY a1 może być całkowicie poprawne nawet poza MySQL
@Onoki: hint: new. old.

@ to zmienna, do wartosci kolumn odwolujesz sie uzywajac new.nazwakolumny lub old.nazwakolumny

new. jest dostepne przy insertach i updaejtach (nowa wartosc kolumny)

old. jest dostepne przy updejtach i delete (stara wartosc kolumny.

w odpowiedniej linii zamien to co masz na

SET new.wartosc = new.wartosc * 0.9;