de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Kaptah
Kaptah
Question

Jak mogę wyszukać wiersze z MAX(wartość kolumny), DISTINCT przez inną kolumnę w SQL?

Mój stół to:

id  home  datetime     player   resource
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399 
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
3  | 10  | 03/03/2009 | john   | 300
4  | 11  | 03/03/2009 | juliet | 200
6  | 12  | 03/03/2009 | borat  | 500
7  | 13  | 24/12/2008 | borat  | 600
8  | 13  | 01/01/2009 | borat  | 700

Muszę wybrać każdy odrębny home posiadający maksymalną wartość datetime.

Wynikiem byłoby:

id  home  datetime     player   resource 
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
8  | 13  | 01/01/2009 | borat  | 700

Próbowałem:

-- 1 ..by the MySQL manual: 

SELECT DISTINCT
  home,
  id,
  datetime AS dt,
  player,
  resource
FROM topten t1
WHERE datetime = (SELECT
  MAX(t2.datetime)
FROM topten t2
GROUP BY home)
GROUP BY datetime
ORDER BY datetime DESC

Nie działa. Zestaw wyników ma 130 wierszy, choć baza danych ma ich 187. Wynik zawiera kilka duplikatów home.

-- 2 ..join

SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM topten s1
JOIN (SELECT
  id,
  MAX(datetime) AS dt
FROM topten
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY datetime 

Nope. Daje wszystkie rekordy.

-- 3 ..something exotic: 

Z różnymi wynikami.

724 2009-03-04T20:14:26+00:00 3
 DineshDB
DineshDB
Edytowane pytanie 26. marca 2018 в 9:58
Programowanie
sql
mysql
greatest-n-per-group
max
distinct
Popular videos
SQL GROUP BY i funkcje agregujące, HAVING, DISTINCT, AVG kurs video
SQL GROUP BY i funkcje agregujące, HAVING, DISTINCT, AVG kurs video
10 lat temu
SQL Query | How to find Maximum of multiple columns | Values
SQL Query | How to find Maximum of multiple columns | Values
1 rok temu
SQL Distinct and Multiple Columns
SQL Distinct and Multiple Columns
10 lat temu
Select Rows With Max Value By Group SQL Interview Question
Select Rows With Max Value By Group SQL Interview Question
4 lata temu
Podstawy SQL (Odcinek 12) - tworzenie tabel (CREATE TABLE, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY)
Podstawy SQL (Odcinek 12) - tworzenie tabel (CREATE TABLE, CHECK, UNIQUE, PRIMARY KEY, FOREIGN KEY)
2 lata temu
Podstawy SQL (Odcinek 8) - funkcje matematyczne oraz grupujące (SUM, COUNT, AVG, MAX, MIN, GROUP BY)
Podstawy SQL (Odcinek 8) - funkcje matematyczne oraz grupujące (SUM, COUNT, AVG, MAX, MIN, GROUP BY)
2 lata temu
excel-211 - Losowanie (wybieranie) unikalnych wartości - LOS, MAX.K, WIERSZ, WYSZUKAJ.PIONOWO
excel-211 - Losowanie (wybieranie) unikalnych wartości - LOS, MAX.K, WIERSZ, WYSZUKAJ.PIONOWO
8 lat temu
Excel - MAX, MIN z kryteriami - wyszukiwanie wartości najwyższych i najniższych warunkowo [odc.884]
Excel - MAX, MIN z kryteriami - wyszukiwanie wartości najwyższych i najniższych warunkowo [odc.884]
1 rok temu
excel-024 - Wyszukanie najwyższej i najniższej wartości - WYSZUKAJ.PIONOWO, MAX, MIN
excel-024 - Wyszukanie najwyższej i najniższej wartości - WYSZUKAJ.PIONOWO, MAX, MIN
9 lat temu
Excel - Zaznaczanie największej lub najmniejszej wartości w każdym wierszu lub kolumnie [odc.826]
Excel - Zaznaczanie największej lub najmniejszej wartości w każdym wierszu lub kolumnie [odc.826]
3 lata temu
Excel - Wyszukaj pionowo z duplikatami (wiele wartości jako wyniki) Office inny niż 365 [odc.867]
Excel - Wyszukaj pionowo z duplikatami (wiele wartości jako wyniki) Office inny niż 365 [odc.867]
2 lata temu
⬇️ Jak wyznaczyć ostatni niepusty wiersz w kolumnie?
⬇️ Jak wyznaczyć ostatni niepusty wiersz w kolumnie?
1 rok temu
Power Query #17 - Max i Min wartość dla unikalnych wierszy
Power Query #17 - Max i Min wartość dla unikalnych wierszy
4 lata temu
Excel - Minimum wiele warunków - jak znaleźć najniższą wartość dla wielu kryteriów [odc.830]
Excel - Minimum wiele warunków - jak znaleźć najniższą wartość dla wielu kryteriów [odc.830]
3 lata temu
excel-098 - Wyszukanie najwyższej wartości (wiele kryteriów) - MAX.JEŻELI
excel-098 - Wyszukanie najwyższej wartości (wiele kryteriów) - MAX.JEŻELI
9 lat temu
3. Kurs SQL - LIMIT, DISTINCT oraz CONCAT
3. Kurs SQL - LIMIT, DISTINCT oraz CONCAT
2 lata temu
excel-097 - Wyszukanie najwyższej wartości z jednym kryterium - MAX JEŻELI
excel-097 - Wyszukanie najwyższej wartości z jednym kryterium - MAX JEŻELI
9 lat temu
excel-354 - Jak szybko sprawdzić jakie wartości występują w kolumnie
excel-354 - Jak szybko sprawdzić jakie wartości występują w kolumnie
7 lat temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Michael  La Voie
Michael La Voie
4. marca 2009 в 8:22
2009-03-04T20:22:47+00:00
Więcej
Źródło
Edytuj
#8872556

Jesteś tak blisko! Wszystko, co musisz zrobić, to wybrać OBA domy i ich maksymalny czas daty, a następnie dołączyć z powrotem do tabeli topten na obu polach:

SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime
Andreas Rejbrand
Andreas Rejbrand
Edytowana odpowiedź 14. lutego 2018 в 12:06
885
0
 Quassnoi
Quassnoi
4. marca 2009 в 8:24
2009-03-04T20:24:20+00:00
Więcej
Źródło
Edytuj
#8872558

To będzie działać nawet jeśli masz dwa lub więcej wierszy dla każdego home z równymi DATETIME's:

SELECT id, home, datetime, player, resource
FROM   (
       SELECT (
              SELECT  id
              FROM    topten ti
              WHERE   ti.home = t1.home
              ORDER BY
                      ti.datetime DESC
              LIMIT 1
              ) lid
       FROM   (
              SELECT  DISTINCT home
              FROM    topten
              ) t1
       ) ro, topten t2
WHERE  t2.id = ro.lid
 Quassnoi
Quassnoi
Edytowana odpowiedź 6. marca 2009 в 8:30
27
0
Ricardo Felgueiras
Ricardo Felgueiras
4. marca 2009 в 8:30
2009-03-04T20:30:58+00:00
Więcej
Źródło
Edytuj
#8872559

Myślę, że to da ci pożądany rezultat:

SELECT   home, MAX(datetime)
FROM     my_table
GROUP BY home

ALE jeśli potrzebujesz również innych kolumn, po prostu wykonaj połączenie z oryginalną tabelą (sprawdź Michael La Voie odpowiedź)

Z najlepszymi pozdrowieniami.

 sactiw
sactiw
Edytowana odpowiedź 26. listopada 2015 в 12:32
25
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Jasur Fozilov
Zarejestrowany 10 godzin temu
2
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
3
Денис Анненский
Zarejestrowany 3 dni temu
4
365
Zarejestrowany 1 tydzień temu
5
True Image
Zarejestrowany 1 tydzień temu
DE
EL
ES
ET
FR
ID
IT
JA
KO
LV
NL
PL
PT
RU
SK
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem