1

最初の郊外、次にAVG(rating_table.rating)でソートする mySQL クエリを作成しようとしています。

これがstreet_tableです:

id       street_name       suburb

0        streetone         subone
1        streettwo         subthree
2        streetthree       subthree
3        streetfour        subtwo

そしてここにrating_tableがあります:

street_id    rating

1            1
2            1
3            4
2            2
1            3

そして、これは私が探している結果です:

id      suburb         avarage_rating

0       subone         (no rating)
1       subtwo         1 + 3 / 2 = 2
3       subthree       4 / 1 = 4 (Just one vote..)
2       subthree       2 + 1 / 2 = 1.5

(ご覧のとおり、avarage_ratingにより、 #3は#2の前にあります)

4

2 に答える 2

2

これはjoin集計ありです。ただし、left join評価がないすべての行を確実に保持する必要があります。

select s.id as street_id, s.suburb, avg(r.rating) as rating
from street_table s left join
     rating_table r
     on s.id = r.street_id
group by s.id, s.suburb
order by s.suburb, avg(r.rating) desc
于 2013-09-15T14:38:45.733 に答える
0

ORDER BY を組み合わせて、次のような複数の列を使用できます。

SELECT .... ORDER BY suburb, AVG(rating_table.rating);

アイテムに固有の順序も定義できます

SELECT .... ORDER BY suburb ASC, AVG(rating_table.rating) DESC;
于 2013-09-15T14:36:46.640 に答える