[MSSQL] Aantal records met dezelfde datum tellen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
Ik probeer een query te maken die het aantal records op dezelfde datum telt. Wat ik heb begrepen is dat ik DATETIME kan gebruiken om te "rekenen" hiermee. Volgende tabel heb ik:

CreationDate
2008-10-28 22:31:05.210
2008-11-11 15:22:50.640
2008-11-24 10:40:46.280
2008-11-21 15:07:47.477
2008-10-27 12:08:22.017
2008-11-20 16:44:55.127
2008-11-12 12:41:13.617
2008-10-30 11:32:24.573
2008-10-29 18:17:05.793
2008-11-12 12:06:20.157

ik wil dus 2 tabellen krijgen uiteindelijk
CreationDate AantalPerDag
2008-10-28 1
2008-11-11 1
2008-11-24 1
2008-11-21 1
2008-10-27 1
2008-11-20 1
2008-11-12 2
2008-10-30 1
2008-10-29 1

Weet iemand hoe ik dit moet doen?

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 26-05 10:35

Pathogen

Shoop Da Whoop

select date(CreationDate), count(date(CreationDate)) as AantalPerDag from table?

[ Voor 29% gewijzigd door Pathogen op 05-01-2009 13:31 ]


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 09:28

CoolGamer

What is it? Dragons?

Je vergeet de Group By. Hiermee kan je de maanden groeperen en dan tellen.

Eerste resultaat op google op toen ik zocht naar "mssql group by month": http://www.sqlhacks.com/index.php/Dates/GroupByMonth , alleen hier maken ze een som i.p.v. een count, maar dat is niet zo moeilijk aan te passen.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

En
SQL:
1
2
GROUP BY CreationDate
;
niet vergeten ;)

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:36

Creepy

Tactical Espionage Splatterer

En om zeker niet te vergeten: alleen je vraag dumpen en hopen dat wij het voor je gaan oplossen is niet de bedoeling. Lees aub PRG Beleid en Het algemeen beleid #topicplaatsen eens door zodat je weet wat we hier van je verwachten.

Dus wat heb je zelf al geprobeerd en wat lukte daar niet mee?

Ook verwachten we dat je minstens een beschrijvend onderwep aangeeft. "MSSQL" zegt natuurlijk niks over je daadwerkelijke probleem. Via een topicreport kan je een voorstel doen voor een nieuw onderwerp.

Ook staan in de SQL FAQ hier in PRG beschrijven hoe group by en count werken. Daar zou je prima mee uit de voeten moeten kunnen om je probleem op te lossen.

[ Voor 12% gewijzigd door Creepy op 05-01-2009 14:07 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 26-05 10:35

Pathogen

Shoop Da Whoop

Ja ok, de group by, maar daar kom je meestal vanzelf achter ;)

Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
Excuses voor de onnozele titel.
Basiskennis heb ik wel, probleem is alleen dat ik met geen mogelijkheid met de functie
date of datetime aan de praat krijg.
'date' is not a recognized built-in function name.
code:
1
SELECT date(CreationDate), count(date(CreationDate)) as AantalPerDag FROM dbo.tblAdvisor_Offices

[ Voor 20% gewijzigd door Phorze op 05-01-2009 13:54 ]


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Date is geen functie in MSSQL. In de 2008 editie kun je converteren naar een DATE, in eerdere versies bestaat het datatype DATE helemaal niet, daar heb je alleen SMALLDATETIME en DATETIME. Wat je dus moet doen is de tijd allemaal op 0:00 zetten:

SQL:
1
2
3
SELECT CONVERT(VARCHAR(10),datumveld,105) as DeDatum, COUNT(*)  as Aantal
FROM Tabel
GROUP BY  CONVERT(VARCHAR(10),datumveld,105)


Eventueel nog een CONVERT er omheen als je een 'echte'DATETIME terug wilt .

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
P_de_B schreef op maandag 05 januari 2009 @ 13:57:
Date is geen functie in MSSQL. In de 2008 editie kun je converteren naar een DATE, in eerdere versies bestaat het datatype DATE helemaal niet, daar heb je alleen SMALLDATETIME en DATETIME. Wat je dus moet doen is de tijd allemaal op 0:00 zetten:

SQL:
1
2
3
SELECT CONVERT(VARCHAR(10),datumveld,105) as DeDatum, COUNT(*)  as Aantal
FROM Tabel
GROUP BY  CONVERT(VARCHAR(10),datumveld,105)


Eventueel nog een CONVERT er omheen als je een 'echte'DATETIME terug wilt .
Het werkt! Duizendmaal dank _/-\o_

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09:47

NMe

Quia Ego Sic Dico.

Begrijp je ook waarom het werkt? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
NMe schreef op maandag 05 januari 2009 @ 14:15:
Begrijp je ook waarom het werkt? :)
De data worden geconverteerd naar volgens mij een uniek getal per dag, vervolgens worden ze weer omgerekend tot datum?
Wat ik niet snap is dat 105 staat voor dd-mm-yy, terwijl ik een datum terugkrijg in dd-mm-yyyy.

Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
105 is met eeuw. Het tabelletje in Books Online is een beetje onduidelijk, zonder eeuw is het '5'.

En hij maakt niet echt een uniek getal per datum, hij converteert een datum met tijd naar een string met alleen het datumgedeelte.

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
P_de_B schreef op maandag 05 januari 2009 @ 15:40:
105 is met eeuw. Het tabelletje in Books Online is een beetje onduidelijk, zonder eeuw is het '5'.

En hij maakt niet echt een uniek getal per datum, hij converteert een datum met tijd naar een string met alleen het datumgedeelte.
Duidelijk :Y)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09:47

NMe

Quia Ego Sic Dico.

Phorze schreef op maandag 05 januari 2009 @ 15:38:
[...]

De data worden geconverteerd naar volgens mij een uniek getal per dag, vervolgens worden ze weer omgerekend tot datum?
Wat ik niet snap is dat 105 staat voor dd-mm-yy, terwijl ik een datum terugkrijg in dd-mm-yyyy.
Ik doelde eigenlijk meer op die group by. Begrijp je waarom je met group by kunt bereiken wat je nodig hebt? Want als ik het goed lees in je startpost heb je group by nog niet (vaak) gebruikt. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Phorze
  • Registratie: December 2004
  • Laatst online: 07-04 13:29
Ik heb nog een toevoeging op mijn vraag, is misschien nog wat specifieker :X
Ik gebruik de data met aantallen om te vergelijken met andere soortgelijke data. Probleem wat hierbij ontstaat is dat de applicatie pas een datum toevoegd op het moment dat er daadwerkelijk wat gebeurt die dag. Dit bemoeilijkt het plotten van grafiekjes e.d.
Is het mogelijk om de "missende" data in te voegen? dus elke dag, met aantal 0 dus.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Phorze schreef op donderdag 15 januari 2009 @ 10:43:
Is het mogelijk om de "missende" data in te voegen? dus elke dag, met aantal 0 dus.
Ja; je kunt een tabel populeren met alle datums van (zeg) 2009, of hell, van 1900 tot 2999 als je wil en daar op (left) joinen. Maar persoonlijk vind ik dat maar een ranzige oplossing en denk ik dat je het beter in je applicatie kunt ondervangen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1