Archief - SQL: Gemiddelde bereken van Aantal Jaren die al Opgeteld zijn...

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

orez

Legacy Member
Ok ik ben aan een statistics scriptje bezig, en ik heb al verschillende statistics zoals, bezoeker vandaag, gister, vorige maand, deze maand, vorig jaar, dit jaar, etc....

Nu echt wil ik ook nog eens het gemiddeld aantal gebruikers berekenen per dag/maand/jaar

Voor het jaar heb ik momenteel dit:

"SELECT DISTINCT YEAR(Date), COUNT(StatID) AS Totaal_bez FROM tblStatistics"

Hier krijg ik dus mooi

2001 ---- 789
2002 ---- 945
2003 ---- 654

....

Nu wil ik hiervan echter het gemiddelde bereken, dus de AVG nemen van die 3 velden. Hier raak ik niet echt verder...

En ook van Maanden & Dagen (loopt over alle jaren) hiervan weet ik niet echt hoe ik eraan moet beginnen, want DAY(Date) haalt de dag op uit dit veld, maar het wordt meermaals herhaald, dus kan ik hier moeilijk een DISTINCT opzetten dat ik normaal toch nodig heb om de statistieken te bereken of zou dit werken met

"SELECT AVG(DAY(Date)) AS ... FROM ... " Of met "SELECT AVG(SUM(DAY(Date))) AS ... FROM ..."

Gelieve mij hierwat klaarheid in te geven bedankt :)

killgore

Legacy Member
"SELECT YEAR(Date) AS Year, DAY(Date), COUNT(StatID) AS Totaal_bez FROM tblStatistics GROUP BY Year"

zoiets???
edit: stomme fout opgemerkt, zou nu moete zijn wat je zoekt.

servi

Legacy Member
ik ben niet zeker of ik het probleem correct begrijp , maar kun je niet gewoon doen :

SELECT MONTH(Date), YEAR(Date) AS jaarnummer, COUNT(StatID) AS Totaal_bez FROM tblStatistics GROUP BY jaarnummer


hmm killgore heeft ongeveer hetzelfde geschreven, dus ik vermoed dat je toch ergens in die richting moet zoeken.

orez

Legacy Member
servi zei:
ik ben niet zeker of ik het probleem correct begrijp , maar kun je niet gewoon doen :

SELECT MONTH(Date), YEAR(Date) AS jaarnummer, COUNT(StatID) AS Totaal_bez FROM tblStatistics GROUP BY jaarnummer


hmm killgore heeft ongeveer hetzelfde geschreven, dus ik vermoed dat je toch ergens in die richting moet zoeken.

jaja maar zo krijg ik alle jaren ondereen

dus

jaarnummer -- Totaal_bez
2001 ---------- 999
2002 ---------- 999
2003 ---------- 999

Tis net van dit deel dat ik jaargemiddelde wil berekenen dus --> 999 + 999 +999 /3

Dus ergens iet met een AVG, dat ik uiteindelijk slechts 1 getal uitkom.

xml

Legacy Member
Kunt ge dat niet beter (of evengoed) in een loop smijten? Dan moet ge maar één query doen.

Disa

Legacy Member
PHP:
$query = mysql_query(".....")
$years = mysql_num_rows($query);
while ($row = mysql_fetch_array($query)) {
     $i = $i + $row["year"];
}
$i = $i / $years

echo "We had an anverage of $i visitors." ;

Denk dat je zoiets bedoelt (heb wel wat simpel gehouden)


Disa

killgore

Legacy Member
"SELECT COUNT(YEAR(Date)) AS aJaren, DAY(Date), COUNT(StatID) DIV aJaren AS gem_bez FROM tblStatistics GROUP BY aJaren"

dit dan??? (rond af naar beneden wel)

servi

Legacy Member
jaja maar zo krijg ik alle jaren ondereen

dus

jaarnummer -- Totaal_bez
2001 ---------- 999
2002 ---------- 999
2003 ---------- 999

Tis net van dit deel dat ik jaargemiddelde wil berekenen dus --> 999 + 999 +999 /3



:confused:


in dat geval is het toch gewoon :

SELECT
( COUNT(statids) + aantaljaren / 2 ) DIV aantaljaren AS aantalhits,
COUNT(DISTINCT YEAR(Date)) AS aantaljaren FROM tblStats;

killgore

Legacy Member
servi zei:
:confused:


in dat geval is het toch gewoon :

SELECT COUNT(statids) DIV aantaljaren AS aantalhits,COUNT(YEAR(Date) AS jaar) AS aantaljaren FROM tblStats GROUP BY jaar;
stop repeating me :p

killgore

Legacy Member
servi zei:
doe ik niet kijk maar naar de query :p

blijft zelfde query, enkel dat jij met een distinct werkt en ik met een group by?

edit: en asge u query aanpast na men post ist ook nie moeilijk he :p

orez

Legacy Member
Toch werkt geen van beiden???

Geeft telkens syntax error bij aJaren of aantaljaren, wat is de betekenis van die DIV ? Functie om het gemiddelde te berekenen ofzo?

*edit: kzit al zover

SELECT COUNT(DISTINCT YEAR(Date)) AS aJaren, COUNT(StatID) As tot_Stats
FROM dbo.tblStatistics

Telt hoeveel jaar er zijn ... Telt het totaal aan Stats Voor de 4 jaar nu zou ik er nog enkel voor moeten zorgen voor

aJaren / Tot_Stats maar als ik doe (aJaren / Tot_Stats) As Gem_bez, krijg ik ne fout : Invalid column name: aJaren, Tot_Stats... Hoe moet ik nu verder ???

killgore

Legacy Member
"SELECT DAY(Date), ROUND(COUNT(StatID)/COUNT(DISTINCT YEAR(Date))) AS gem_bez FROM tblStatistics"
en nu is men inspiratie weg

orez

Legacy Member
killgore zei:
"SELECT DAY(Date), ROUND(COUNT(StatID)/COUNT(DISTINCT YEAR(Date))) AS gem_bez FROM tblStatistics"
en nu is men inspiratie weg

Function ROUND Requires 2 or 3 attributes...

pff SQL is ook ni alles ze :unsure:

*edit

Dit doet voorlopig de truc:

SELECT COUNT(StatID)/COUNT(DISTINCT YEAR(Date)) AS gem_bez FROM tblStatistics

Het afronden zal ik later wel nog eens zoeken tenzij iemand hier raad mee weet

killgore

Legacy Member
aragorn zei:
AVG misschien eens proberen, niet?

Ara
heel mssch omdat die niet bestaat???
edit: Als bij round 2 argumenten verplicht zijn: 0 als 2° argument :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan