Używam grupy, aby wyświetlić ogólne informacje ze stołu.

SELECT * FROM table GROUP BY Continent

DATA są następujące:

|--------|-----------|-----------|
| Id     | Continent |    Fruits |
|--------|-----------|-----------|
|      1 |    Africa |    Banana |
|      1 |    Africa |    Cherry |
|      1 |    Mexico |     Apple |
|      1 |    Mexico |      Pear |
|      1 |    Europa | Blueberry |
|      1 |    Europa |    Orange |
|      1 |    Europa |      Kiwi |
|--------|-----------|-----------|

Jak mogę uzyskać pierwsze owoce z każdego kontynentu?

Oto, czego próbowałem:

SELECT *, MIN(Fruits) AS FirstFruit FROM table GROUP BY Continent

Dzięki.

0
Gepeto 18 październik 2020, 00:19

1 odpowiedź

Najlepsza odpowiedź

Jeśli chcesz tylko dwie kolumny w zestawie wynikowe, agregacja jest wystarczająca:

select continent, min(fruits) as firstfruit 
from mytable 
group by continent

Jeśli z drugiej strony są inne kolumny, które są zainteresowani, sama agregacja nie może dać ci wyniku, który chcesz. Jedna opcja używa skorelowanego podzapytania do filtrowania tabeli:

select t.*
from mytable t
where t.fruits = (select min(t1.fruits) from mytable t1 where t1.continent = t.continent)
0
GMB 17 październik 2020, 21:21