Gå til innhold

[Løst]Hjelp til en sql spørring


Anbefalte innlegg

Hei,

 

Jobber med eit program som holder telling på antal renders og unike besøk. Holder på å lagen en sql spørring som skal hente ut stattestikker fra kver måned mellom to tidspunkt. Kom from til følgende spørring:

 

SELECT SUM(hit_renders) as sumrenders, MIN(hit_renders) as minrenders, MAX(hit_renders) as maxreders, AVG(hit_renders) as avgrenders,SUM(hit_uhits) as sumuhits, MIN(hit_uhits) as minuhits, MAX(hit_uhits) as maxuhits, AVG(hit_uhits) as avguhits, hit_month as month, hit_year as year FROM sh_stats_data WHERE hit_month>=01 AND hit_year>=2005 AND hit_month<=03 AND hit_year<=2005 GROUP BY hit_year, hit_month

 

Og denne fungere top, men problemene kommer når eg vi ha infoen mellom 1 Januar 2005 og 1 Mars 2006:

 

SELECT SUM(hit_renders) as sumrenders, MIN(hit_renders) as minrenders, MAX(hit_renders) as maxreders, AVG(hit_renders) as avgrenders,SUM(hit_uhits) as sumuhits, MIN(hit_uhits) as minuhits, MAX(hit_uhits) as maxuhits, AVG(hit_uhits) as avguhits, hit_month as month, hit_year as year FROM sh_stats_data WHERE hit_month>=01 AND hit_year>=2005 AND hit_month<=03 AND hit_year<=2006 GROUP BY hit_year, hit_month

 

No returneren den dei tre første månene i 2005 og så dei tre første i 2006. Og når eg ser på spørringen så er dette ganske logisk. Men eg klarer ikkje å løse dette. Noen som har eit par tips ?

 

Takk,

Runar

 

Edit: Slik ser databasen ut:

CREATE TABLE `sh_stats_data` (
 `hit_day` int(11) NOT NULL,
 `hit_month` int(11) NOT NULL,
 `hit_week` int(11) NOT NULL,
 `hit_year` int(11) NOT NULL,
 `hit_renders` int(11) NOT NULL,
 `hit_uhits` int(11) NOT NULL
)

Endret av Shadows0
Lenke til kommentar
Videoannonse
Annonse

Hei

 

Regner med at du må slå sammen feltene. Ettersom det er int kan man ikke bruke pluss. Har dessverre ikke mulighet til å sjekke noen koder nå.

 

Kanskje dette går:

 

(hit_year & hit_month>='200501' ) and (hit_year & hit_month<='200603')

 

 

Hvis ikke det går må man gjøre feltene om til tekst verdier for så å legge dem sammen.

 

Håper du får det til.

 

Hilsen

Espen

Lenke til kommentar

hva med (hit_month>=01 and hit_month<=03 and hit_year=2006) or (hit_year=2005)

 

Edit: Hvorfor lagrer du ned måned og år i hver sine felter? Det enkleste ville ha vært å hatt et dato felt for når hit'et ble registrert, da kunne du tatt "where dato>='2005-01-01' and dato < '2006-04-01'

Endret av tZar
Lenke til kommentar
(hit_year  & hit_month>='200501' ) and (hit_year  & hit_month<='200603')

8070095[/snapback]

Takk skal prøve det no :)

 

 

Edit: Hvorfor lagrer du ned måned og år i hver sine felter? Det enkleste ville ha vært å hatt et dato felt for når hit'et ble registrert, da kunne du tatt "where dato>='2005-01-01' and dato < '2006-04-01'

8070131[/snapback]

Det lagrest i forskellige felter fordi eg trenger muligheten til å gruppere etter uke eller måneder.

Lenke til kommentar
Det lagrest i forskellige felter fordi eg trenger muligheten til å gruppere etter uke eller måneder.

8070288[/snapback]

 

Det kan du gjøre uten å måtte ha det i forskjellige felter, litt avhengig av databasemotor selvsagt.

 

Edit:

I MySQL feks, group by year(dato), month(dato)

 

Du kan vel sikkert gjøre tilsvarende med datepart i mssql hvis det er den du bruker

Endret av tZar
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...