#sql #oracle
#sql #Oracle
Вопрос:
У меня есть таблица appWebStats со следующими полями таблицы AppName, userName, DateTime
я попытался
select Count(a.appName) as totalHits ,
Count(a.distinct userName) as visitors ,
a.dateTime
from appWebStats a
where date between time between '11-APR-12' and '14-APR-12'
group by a.appName ,a.userName,a.dateTime;
но его возврат 1 во всех строках
что здесь может быть не так?
Редактировать:
чего я хочу, так это
day appname totalHist uniqueVisitors
11 app1 56 5
11 app2 36 8
11 app3 26 7
12 app1 56 6
12 app2 36 8
13 app1 27 9
14 app2 34 4
Ответ №1:
Ваш запрос не выполняет то, что указано в вашем вопросе. Если вам нужны посетители по приложениям, затем сгруппируйте по приложению и подсчитайте посетителей:
select a.appName,
count(*) as visitors,
count(distinct a.userName) as uniqueVisitors
from table a
where datetime between '11-APR-12' and '14-APR-12'
group by a.appName;
Если вместо этого вам нужно количество приложений и посетителей в день, используйте время;
select trunc(a.datetime) as theday,
count(distinct a.appName) as numapps,
count(distinct a.userName) as uniqueVisitors
from table a
where datetime between '11-APR-12' and '14-APR-12'
group by trunc(a.datetime)
order by 1;
Редактировать:
Я думаю, что запрос, который вы ищете, это:
select trunc(a.datetime) as theday, a.appName as numapps,
count(*) as TotalHist,
count(distinct a.userName) as uniqueVisitors
from table a
where datetime between '11-APR-12' and '14-APR-12'
group by trunc(a.datetime), a.appName
order by trunc(a.datetime), a.appName;
Комментарии:
1. @Haider . , , Вы должны поиграть с разными запросами, чтобы увидеть, что делают агрегации. Если вы собираетесь использовать SQL, вы должны получить представление о том, как работает язык.