webForumDet fria alternativet
Logga in / Bli medlem

Distinct Count??

Databaser & SQL

21 svar · 433 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Trådstart#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?

Medlem sedan juni 200032 967 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,

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

Har jag förstått?

Medlem sedan dec. 20011 860 inlägg
#4

Hur skriver jag ut detta sen då LarsG?

Medlem sedan juni 200032 967 inlägg
#5

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

Mvh,

Medlem sedan dec. 20011 860 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?

Medlem sedan juni 200032 967 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,

Medlem sedan dec. 20011 860 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.

Medlem sedan juni 200032 967 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,

Medlem sedan dec. 20011 860 inlägg
#10

Hmm - den visar 95 som antal :/

Medlem sedan juni 200032 967 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,

Medlem sedan dec. 20011 860 inlägg
#12

Det kan nog vara så :/

Medlem sedan dec. 20011 860 inlägg
#13

Jag vill inte ha med tiden alls!

Medlem sedan juni 200032 967 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. ;)

Medlem sedan dec. 20011 860 inlägg
#15

Okej tackar - ska testa lite!

Medlem sedan dec. 20011 860 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?

Medlem sedan juni 200032 967 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,

Medlem sedan dec. 20011 860 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

Medlem sedan dec. 200012 464 inlägg
#19

Mitt förslag då?

Medlem sedan dec. 20011 860 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!

394 ms totalt · 4 externa anrop · v20260731065814-full.50d4b5bd
130 ms — deklarationer (db)
127 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)