---
title: "Rangordna efter högsta medelvärde"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/189036-rangordna-efter-högsta-medelvärde"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "bigsky"
published: "2012-01-25T10:58:18.000Z"
updated: "2012-01-26T22:12:47.000Z"
replies: 9
views: 913
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/189036-rangordna-efter-högsta-medelvärde"
---

# Rangordna efter högsta medelvärde

## #1 — bigsky, 2012-01-25T10:58Z

Använder MySQL, tabeller:

**restaurants**
\- restaurant_id
\- district_id
\- restaurant_name

**visits**
\- visit_id
\- restaurant_id
\- date_visited
\- tot_1_4

Kolumnerna restaurant_id är förstås relaterade till varandra. I tabellen visits förekommer samma restaurant_id flera gånger, dock med olika datum i date_visited och olika summor i tot_1_4.

Det jag vill göra är:

\- Få fram ett medelvärde av tot_1_4 för varje restaurangs alla förekomster i tabellen visits.
\- Rangordna de 5 restauranger som har högst medelvärde så att det skrivs ut t ex:

1\. Restaurang B 88%
2\. Restaurang A 70%
3\. Restaurang L 55%
4\. Restaurang D 45%
5\. Restaurang C 13%

Permalänk: https://www.webforum.nu/p/189036

## #2 — clarkbones, 2012-01-25T12:33Z

Liet svårt att veta hur du lagrat data i fältet tot_1_4, men här kommer något du kan utgå ifrån.

Fråga 1:
SELECT AVG(tot_1_4) AS Betyg, R.Restaurant_ID,restaurant_name 
FROM Restaurants R
INNER JOIN Visits V ON R.Restaurant_ID=V.Restaurant_ID
GROUP BY R.Restaurant_ID,restaurant_name

Fråga 2:
SELECT TOP 5 \* FROM
(
SELECT AVG(tot_1_4) AS Betyg, R.Restaurant_ID,restaurant_name 
FROM Restaurants R
INNER JOIN Visits V ON R.Restaurant_ID=V.Restaurant_ID
GROUP BY R.Restaurant_ID,restaurant_name
) TABBY
ORDER BY Betyg DESC

Permalänk: https://www.webforum.nu/p/2291786

## #3 — bigsky, 2012-01-25T17:05Z

Datan i tot_1_4 är sparad som tvåsiffriga tal t ex. 88 med typ tinyint(11), default 0.

Permalänk: https://www.webforum.nu/p/2291798

## #4 — clarkbones, 2012-01-25T20:05Z

Dåså, då ska min lösning funka!

Permalänk: https://www.webforum.nu/p/2291803

## #5 — bigsky, 2012-01-26T16:36Z

Grymt! Stort tack. Använde fråga 2 och bytte ut TOP 5 mot LIMIT 5 eftersom jag kör MySQL.

Permalänk: https://www.webforum.nu/p/2291821

## #6 — bigsky, 2012-01-26T17:51Z

Följdfråga: Hur skulle frågan se ut om jag vill ta reda på vilken plats varje restaurangs betyg har i relation till de övriga restaurangernas betyg och sätta den platsen i parantes enl. nedan?

T ex:

Restaurang B 88% (1)
Restaurang A 70% (3)
Restaurang L 55% (29)
Restaurang D 45% (32)
Restaurang C 13% (47)

Permalänk: https://www.webforum.nu/p/2291827

## #7 — clarkbones, 2012-01-26T19:15Z

Hmm, vad menar du med "vilken plats varje restaurangs betyg har i relation till de övriga restaurangernas betyg "?

Permalänk: https://www.webforum.nu/p/2291831

## #8 — bigsky, 2012-01-26T19:17Z

Jag tänkte att om 88% är det högsta värdet då blir det ju plats 1. Och t ex. 13% är det 47:e högsta värdet av alla restaurangers betyg så blir det ju plats 47.

Permalänk: https://www.webforum.nu/p/2291832

## #9 — clarkbones, 2012-01-26T20:46Z

Jo, men vi har ju sorterat på betyg och vi visar bara de fem översta så i detta exempel så blir placeringen 1-5 i vårt exempel(?) Har jag fattat rätt?

Om det är det du vill lösa så finns det RANK
<http://thinkdiff.net/mysql/how-to-get-rank-using-mysql-query/>

Permalänk: https://www.webforum.nu/p/2291840

## #10 — bigsky, 2012-01-26T22:12Z

Jag var nog otydlig. De är egentligen två listor jag ska göra. I den andra listan ska alla restauranger skrivas ut och där sorteras ordningen på namn och inte efter betyg. Där vill jag skriva ut vilken plats varje enskild restaurangs betyg har.
Det finns väl inget i koden ovan enligt SQL-fråga två som innehåller betygets platsnummer på listan?

Permalänk: https://www.webforum.nu/p/2291851

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/189036-rangordna-efter-högsta-medelvärde
