konto usunięte

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Zastanawiam się czy jest możliwość uniknięcia ciężkiego działa, jakim jest procedura dla takiego prostego zapytania:

SELECT col1, col2, min(col3)
FROM table
GROUP BY col1, col2
ORDER BY col1, col2, col3 asc

Z tym, że funkcja min() (albo ekwiwalentna funkcja) powinna zwracać nie jeden, a 10 elementów z każdej kombinacji col1; col2; col3[1-10]

Myślałem o wrzuceniu LIMIT 10 ale wtedy usuwa wszystko powyżej 10 dla całej tabeli :)

Procedura jest już napisana ale sądzę, że jest na to o wiele prostsze i szybsze rozwiązanie 1 zapytaniem sql.Paweł Jędrasiewicz edytował(a) ten post dnia 01.02.10 o godzinie 15:49
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Paweł Jędrasiewicz:
Zastanawiam się czy jest możliwość uniknięcia ciężkiego działa, jakim jest procedura dla takiego prostego zapytania:

SELECT col1, col2, min(col3)
FROM table
GROUP BY col1, col2
ORDER BY col1, col2, col3 asc

Z tym, że funkcja min() (albo ekwiwalentna funkcja) powinna zwracać nie jeden, a 10 elementów z każdej kombinacji col1; col2; col3[1-10]

Myślałem o wrzuceniu LIMIT 10 ale wtedy usuwa wszystko powyżej 10 dla całej tabeli :)

Procedura jest już napisana ale sądzę, że jest na to o wiele prostsze i szybsze rozwiązanie 1 zapytaniem sql.Paweł Jędrasiewicz edytował(a) ten post dnia 01.02.10 o godzinie 15:49
znaczy sie chcesz col1, col2, col3 dla 10 najmniejszych elementów w col3?
a to nie wystarczy posortowac po col3 i wziac 10 pierwszych?
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Jeśli dobrze zrozumiałem kolega chce po 10 najmniejszych col3 dla każdej kombinacji (col1,col2).

konto usunięte

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Michał Jarosz:
Jeśli dobrze zrozumiałem kolega chce po 10 najmniejszych col3 dla każdej kombinacji (col1,col2).

Tak. Wyniki powinien być taki (w col3 przykładowe liczby - ważne aby były po prostu order by col3 asc):

col1 | col2 | col3
rowA | row1 | 1
rowA | row1 | 2 (w sumie 10 wierszy - aż do rowA | row1 | 10)
rowA | row2 | 2
rowA | row2 | 4 (w sumie 10 w.-aż do wiersza rowA | row2 | 55)
rowB | row1 | 1
rowB | row1 | 9 (w sumie 10 w. - aż do wiersza rowB | row1 |70)

konto usunięte

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Jakos dzisiaj nie mam glowy,
ale moze cos w tym rodzaju ?
:
SELECT col1, col2, col3
FROM(
SELECT TOP 10 col1, col2, col3
FROM table
ORDER BY col1, col2, col3 ASC)Marcin Pluta edytował(a) ten post dnia 04.02.10 o godzinie 13:38
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

MySQL nie ma TOP

konto usunięte

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

sorki moje niedopatrzenie zamien top na LIMIT 10
w koncu to nie ma byc solucja a tylko pomysl :)Marcin Pluta edytował(a) ten post dnia 04.02.10 o godzinie 13:29

konto usunięte

Temat: [mysql] funkcja min zwracająca więcej niż 1 element

Na pierwszy rzut oka chyba chodzi ci co RANK z PARTITION, w mySQL jeszcze tego raczej nie ma, więc pewnie trzeba to jakoś obejść.

Przemek coś na blogu ambitnego o tym pisał ;-)



Wyślij zaproszenie do