Selekcja 100 rekordów po numerze kolumny

Selekcja 100 rekordów po numerze kolumny
0

Dzień dobry, mam następujący problem.

Musze wyznaczyć 100 największych rekordów po numerze w kolumnie.
Struktura wygląda tak:

A B
1 1
22 2
31 1
41 2

Muszę wyznaczyć dla każdego nr B największe liczb z kolumny A. Czyli w tym przypadku B1 = 31, 1; B2 = 41, 22
Zadanie wydaje się być proste, ale mam ponad 10 mln liczb w kolumnie A oraz ponad 40 tys nr w kolumnie B.
Czy ktoś mógłby mi pomóc? Dodam, że dość słabo orientuje się w SQL-u wiec prosiłbym raczej o rozwiązanie dla ułomnych :D

krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 lata
  • Postów:1272
0
Kopiuj
select max(a) as A, B from costam group by B
edytowany 1x, ostatnio: krzysiek050
0

Ale czy w jest zawarte żeby wyznaczył 100 największych rekordów po nr wiersza B?

krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 4 lata
  • Postów:1272
0

Tak, jest :)

woolfik
gościu chyba o limit pyta (vel TOP z accessa), a tego mu nie dopisałeś :)
krzysiek050
Jak nie? Działa to pięknie. Nic tylko oddawać na zaliczenie :)
woolfik
co prawda nie mam accessa aby to sprawdzić ale na moje oko dostanie gościu wszystkie rekordy z max(a), a z tego co zrozumiałem chodzi mu tylko o 100 największych wyników ;)
0

Nie działa :P Powinno to raczej wyglądać tak:

SELECT b, MAX(a)
FROM tabela
GROUP BY b
ORDER BY b DESC
LIMIT 100

0

Wrzuciłam Twoje zapytanie w Accessie, w sql :

SELECT [1].ID_WYDZ, MAX([1].treeHt)
FROM 1
GROUP BY [1].ID_WYDZ
ORDER BY [1].treeHt DESC
LIMIT 100;

Czyli mam tabele 1, nazwy kolumny to ID_WYDZ oraz treeHt, ale wyskakuje mi błąd w ORDER BY. Czy ktoś wie dlaczego?

0

SELECT [1].ID_WYDZ, MAX([1].treeHt) as dupa
FROM 1
GROUP BY [1].ID_WYDZ
ORDER BY dupa DESC
LIMIT 100;

0

Skoro w accessie wiec pewnie w MS SQL :P wiec nie limit a TOP

0

Dobra to może podsumuje bo widzę że się nie zrozumieliśmy.

Potrzebuje wyciągnąć 100 największych wyników w kolumnie A dla każdego nr występującego w kolumnie B. Numery w kolumnie B się naturalnie powtarzają.

nalik
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:1039
0

Dla sqllite, zamien limit na odpowiednie slowo i sprawdz czy rowid tak samo sie nazywa w twojej bazie (jak nie to uzyj zamaist rowid klucza). Limit moze nie byc obsługiwany w podzapytania WHERE IN, zależy od serwera bazy.

Kopiuj
SELECT b, a 
    FROM costam c1
    WHERE c1."ROWID" IN (
        SELECT c2."ROWID"
            FROM costam c2 
            WHERE c2.b = c1.b
            ORDER BY a DESC
            LIMIT 100)
    ORDER BY b ASC; 
edytowany 4x, ostatnio: nalik
woolfik
Po co podzapytanie?
nalik
Możesz zrobić bez pod zapytania jak wiesz jak. Ja nie wiem ;) pamietaj że chce po 100 najlepszych dla każdego b.
woolfik
aaa ok po 100 max(a) dla każdego B ... to masz rację bez podzapytania będzie ciężko ;)
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 12 godzin
  • Postów:1595
0

Nawiązując do tego co napisał @nalik w MSSQL będzie to wyglądać mniej więcej tak:

Kopiuj
 select distinct br.b, s.a
   from tabela br
  cross apply (select top 2 b.a from tabela b where b.b = br.b order by b.a desc) s
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)