SQL Abfrage nach Datum sortieren?

Hallo Wissende,

wie kann man die folgende SQL Abfrage formulieren um Datum & Count für jeden Tag zu bekommen?
Das Ergebniss sollte so aussehen:
Count date
3 2015-07-01
39 2015-07-02
32 2015-07-03

Hier die SQL ABFRAGE:
SELECT COUNT(DISTINCT u.USER_IP), date(u.date)
FROM user_visits u WHERE date(u.date)>‚2015-07-01‘ Order BY date(u.date) ASC

date(u.date)… da u.date in diesem Format is 2015-07-01 00:00:00

Vielen Dank,
Mini

Moin,

da fehlt doch ein Group by u.date. Und wo bleibt USER_IP in der Liste?

Gruß Ralf

Order by u.date ASC , da wäre date eh falsch, weil dann wird falsch sortiert , deswegen steht das bei u.date auch so , damit man es sortieren kann

12.08.2011
12.08.2010
11.08.2011
11.08.2010

siehste den Fehler ?

deswegen anders rum , damit wenn schon nach zahlen dann richtig .
2011.08.12
2011.08.11

und erst mit Group by kannst du auch COUNT verwenden , somit würden dann alle am selben Tag gezählt werden

Fantastisch Group by functioniert Danke :wink:

Gibt es eine Möglichkeit die Dauer dieses Queries zu verkürzen?
Es analysiert zusätzlich zur Abfrage noch Social Media Accounts:
SELECT
COUNT(DISTINCT u.USER_IP) AS COUNTS,
(SELECT COUNT(DISTINCT a.USER_IP) FROM user_visits a WHERE LEFT(prev_page, 24) = ‚https://www.facebook.com‘ AND date(a.date)=date(u.date)) AS FACEBOOK,
(SELECT COUNT(DISTINCT a.USER_IP) FROM user_visits a WHERE LEFT(prev_page, 24) = ‚https://www.linkedin.com‘ AND date(a.date)=date(u.date)) AS Linkedin,
(SELECT COUNT(DISTINCT a.USER_IP) FROM user_visits a WHERE LEFT(prev_page, 24) = ‚https://www.twitter.com‘ AND date(a.date)=date(u.date)) AS Linkedin,
date(u.date) AS DATE,
DAYNAME(u.date)
FROM user_visits u WHERE LEFT(page, 3) = ‚www‘ AND date(u.date)>‚2015-07-01‘ GROUP BY date(u.date) DESC

Fantastisch Group by functioniert Danke :smiley: )

Gibt es eine Möglichkeit die Dauer dieses Queries zu verkürzen?
SELECT
COUNT(DISTINCT u.USER_IP) AS COUNTS,
(SELECT COUNT(DISTINCT a.USER_IP) FROM user_visits a WHERE LEFT(prev_page, 24) = ‚https://www.facebook.com‘ AND date(a.date)=date(u.date)) AS FACEBOOK
FROM user_visits u WHERE LEFT(page, 3) = ‚www‘ AND date(u.date)>‚2015-07-01‘ GROUP BY date(u.date) DESC

Moin,

auf prev_page muss ein Index liegen, wobei ich nicht sicher bin, ob der bei LEFT überhaupt zieht. Hat die DB einen Optimizer? Dann sollte damit auch zu sehen sein, welche Indizes benutzt werden. DB2 kennt dazu den Befehl Explain.

Gruß Ralf

ich verstehe dein date(u.date) schachtel nicht … a.date=u.date … warum also eine funktion setzen wo schon ein datum drinne ist … das feld ist doch typ date , also lass es weg .