webForumDet fria alternativet

Distinct Count??

21 svar · 433 visningar · startad av Asa

AsaMedlem sedan dec. 20011 934 inlägg
#1

Jag har en tabell som heter visad. I den finns fälten

id-räknare
bannerId - tal
datum - datum/tid

För varje gång en banner visas sparas datumet och dess unika id till databasen!

Jag vill nu räkna hur många dagar som en banner har varit aktiv. Hur gör jag?

@ndersMedlem sedan juni 200026 914 inlägg
#2

Jag förstår inte vad frågan har med count att göra? Det borde väl stämma om man tar första visningen och räknar tidsskillnad?

SELECT TOP 1 *, DATEDIFF('d', Now(), datum) AS Livetid FROM visad WHERE bannerId = 1 ORDER BY datum ASC

Jag antar att du använder Access.

Mvh,

LarsGMedlem sedan dec. 200012 465 inlägg
#3
select count(*) from (select distinct year(datum),month(datum),day(datum) from visad where bannerid = 4711)

Har jag förstått?

AsaMedlem sedan dec. 20011 934 inlägg
#4

Hur skriver jag ut detta sen då LarsG?

@ndersMedlem sedan juni 200026 914 inlägg
#5

Ange index 0 för den icke namngivna kolumnen, eller ge den ett alias i SQL-frågan.

Mvh,

AsaMedlem sedan dec. 20011 934 inlägg
#6

Hmm! Okej!

EN bättre förklaring av allt kanske?:

id	BannerId	datum
137	1	2002-10-16
138	1	2002-10-16
139	1	2002-10-16
140	1	2002-10-16
141	1	2002-10-18
142	1	2002-10-18
143	1	2002-10-18

Den ska bland dessa poster räkna till 2?

@ndersMedlem sedan juni 200026 914 inlägg
#7

Du vill alltså visa antalet unika dagar som en viss banner visats? Då så.

SELECT COUNT(*) AS Antal FROM (SELECT DISTINCT datum FROM visad WHERE bannerId = 1)

Jag antar fortfarande att du använder Access. Om du använder någon annan dbms borde du kunna skriva

SELECT COUNT (DISTINCT datum) AS Antal FROM visad WHERE bannerId = 1

Mvh,

AsaMedlem sedan dec. 20011 934 inlägg
#8

Detta:

<%Set Dagar=Conn.Execute("SELECT COUNT(*) AS Antal FROM (SELECT DISTINCT datum FROM visad WHERE bannerId=" & Request.QueryString("bannerId"))%>

Antal dagar: <%=Dagar("antal")%>

Får felmeddelandet:

Syntaxfel i FROM-instruktion.

@ndersMedlem sedan juni 200026 914 inlägg
#9

Du saknar slutparentes runt din distinct-fråga.

<%Set Dagar=Conn.Execute("SELECT COUNT(*) AS Antal FROM (SELECT DISTINCT datum FROM visad WHERE bannerId=" & Request.QueryString("bannerId") & ")")%>

Mvh,

AsaMedlem sedan dec. 20011 934 inlägg
#10

Hmm - den visar 95 som antal :/

@ndersMedlem sedan juni 200026 914 inlägg
#11

Lagrar du tid också i datumkolumnen? Då kan det nog bli så, eftersom det blir väldigt många olika unika.

Mvh,

AsaMedlem sedan dec. 20011 934 inlägg
#12

Det kan nog vara så :/

AsaMedlem sedan dec. 20011 934 inlägg
#13

Jag vill inte ha med tiden alls!

@ndersMedlem sedan juni 200026 914 inlägg
#14

Det borde väl gå att lösa genom att använda DatePart() i din SELECT DISTINCT-fråga.

Lämnas som uppgift till läsaren. ;)

AsaMedlem sedan dec. 20011 934 inlägg
#15

Okej tackar - ska testa lite!

AsaMedlem sedan dec. 20011 934 inlägg
#16

Men med DatePart kan man väl inte hämta hela datumet me år, mån och dag?

Ooops! Nu posta jag ett nytt inlägg :/ Skulle ha uppdaterat det förra!

Jag skrev SELECT DISTINCT Left(datum,10) .....
Det verka funka men är det säkert att det funkar jämt?

@ndersMedlem sedan juni 200026 914 inlägg
#17

Hmm. Nej, det kanske du har rätt i.
Och Left-varianten är inte säkert att den funkar jämt. Jag kommer dock inte på någon fantastisk lösning just nu. :/

Mvh,

AsaMedlem sedan dec. 20011 934 inlägg
#18

Okej! Tack för all hjälp! Men jag har det med Left kvar! Är dock bara en grej för att se antal dagar bannern varit aktiv!

http://www.gruvsjo.com/default.asp?part=hyr&bannerId=1

LarsGMedlem sedan dec. 200012 465 inlägg
#19

Mitt förslag då?

AsaMedlem sedan dec. 20011 934 inlägg
#20

Det funkade inte eller hade jag glömt nåt? Skriv allt som behövs för att skriva ut det om du vill!

Genererad på 483 ms · cache AV · v20260730165559-full.f96bc7eb