SQL Statement Durchschnittswert

Hallo zusammen.

Ich benötige ein SQL-Statement, dass mir aus einer Tabelle und dem Datenfeld value, einen Prozent-Wert ermittelt.

Ich habe eine Tabelle mit:

  • countryname
  • countryvalue
  • category

hier stehen nun zB folgende Werte drinnen:
aut, 10, cat1
aut, 99, cat2
aut, 83, cat3
de, 3, cat1
de, 44, cat2
de, 55, cat3

ich möchte nun, bezogen auf countryname den durchschnittswert ermitteln:
bei aut müsste 64% haben. Wie kann ich das in SQL realisieren??

Vielen Dank.

Gruss,
Sebastian

Moin, Sebastian,

den Durchschnitt für Value pro Country bekommst Du mit

SELECT DISTINCTROW table.Name, Avg(table.value) AS [Durchschnitt]
FROM table
GROUP BY table.Name;

Das hat aber mit Prozenten wenig zu tun.

Gruß Ralf

Hi Ralf.

den Durchschnitt für Value pro Country bekommst Du mit

SELECT DISTINCTROW table.Name, Avg(table.value) AS
[Durchschnitt]
FROM table
GROUP BY table.Name;

Super, das hat geklappt, jetzt sollte ich nochmals eine WHERE-Clause einbauen und zwar, WHERE table.descriptionkat NOT LIKE ‚1%‘ OR table.descriptionkat NOT LIKE ‚6%‘, aber, da bekommt ich FEHLER: GROUP BY clause, wrong!

Wie kann ich diese Where einbauen??

LG,
Sebastian

Hi!

Wo hast Du die Where-Clause hingeschrieben?

Wahrscheinlich so nicht, denn so würde es funktionieren:

SELECT table.Name, Avg(table.value) AS [Durchschnitt]
FROM table
WHERE table.descriptionkat NOT LIKE '1%' 
 OR table.descriptionkat NOT LIKE '6%'
GROUP BY table.Name;

Und Du bist sicher, daß Du hier ein ODER willst? Ich glaube eher, Du willst hier eine UND-Verknüpfung …

WHERE table.descriptionkat NOT LIKE '1%' 
 AND table.descriptionkat NOT LIKE '6%')

oder

WHERE NOT (table.descriptionkat LIKE '1%'
OR table.descriptionkat LIKE '6%')

Sieht irgendwie _vernünftiger_ aus …

Grüße,
Tomh

1 Like

Hi!

Wo hast Du die Where-Clause hingeschrieben?

Ich hatte die Where-Clause genau, da wo du sie hast, jedoch kam bei mir die Fehlermeldung… kA, was da los war. seltsam!

Wahrscheinlich so nicht, denn so würde es funktionieren:

SELECT table.Name, Avg(table.value) AS [Durchschnitt]
FROM table
WHERE table.descriptionkat NOT LIKE ‚1%‘
OR table.descriptionkat NOT LIKE ‚6%‘
GROUP BY table.Name;

Diese Statement hat einwandfrei geklappt, danke dir.

Und Du bist sicher, daß Du hier ein ODER willst? Ich glaube
eher, Du willst hier eine UND-Verknüpfung …

Stimmt du hast recht… OR, danke fürs mitdenken…!

Schönen Tag,

Gruss,
Seb