Как правильно построить запрос?

Тема в разделе "SQL", создана пользователем jcolor, 11 май 2007.

  1. jcolor

    jcolor Гость

    Всем, привет!!!
    Подскажте, как правильно построить следующий запрос:
    Есть таблица , в которой следующие поля

    OpenDate - дата запроса
    IdUser - id пользоваетеля
    OpenFile - название открываемого файла

    Как красиво построить запрос, чтобы в результате получить таблицу:
    -дата
    -кол-во уникальных пользователей за эту дату
    -общее кол-во открываемых файлов

    Я написала процедуру с двумя временными таблицами:
    первая - дата, кол-во файлов
    вторая - дата, кол-во уникальных пользователей
    затем их просто объединила

    Можно ли как-то по другому это все сделать???
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-jcolor+11:05:2007, 16:13 -->
    <span class="vbquote">(jcolor @ 11:05:2007, 16:13 )</span><!--QuoteEBegin-->Можно ли как-то по другому это все сделать???
    [snapback]65634" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Поискать по форуму "GROUP BY"
     
  3. jcolor

    jcolor Гость

    <!--QuoteBegin-European+11:05:2007, 16:18 -->
    <span class="vbquote">(European @ 11:05:2007, 16:18 )</span><!--QuoteEBegin-->Поискать по форуму "GROUP BY"
    [snapback]65636" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    Если с помощью GROUP BY
    то получается следующее:

    Код (Text):
    SELECT OpenDate, IdUser, OpenFile , COUNT(*) FROM Table
    GROUP BY OpenDate, IdUser, OpenFile
    В таком случае определяется только кол-во открываемых файлов,
    а надо еще добавить колонку уникальных пользователей за день
     
  4. jcolor

    jcolor Гость

    <!--QuoteBegin-European+11:05:2007, 16:18 -->
    <span class="vbquote">(European @ 11:05:2007, 16:18 )</span><!--QuoteEBegin-->Поискать по форуму "GROUP BY"
    [snapback]65636" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    СПАСИБО!!!!
    Нашла ,
    действительно с помощью этого можно построить данный запрос

    <!--QuoteBegin-sax_ol+11:05:2007, 16:38 -->
    <span class="vbquote">(sax_ol @ 11:05:2007, 16:38 )</span><!--QuoteEBegin-->можно конечно и так:
    select OpenDate, count(distinct IdUser) as Users, (select count(*) from dbo.Table1) as _all from Table
    group by OpenDate
    но несколько "некрасиво"
    [snapback]65644" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    Получается следующий запрос:
    Код (Text):
    SELECT OpenDate, COUNT(DISTINCT IdUser), COUNT(OpenFile) FROM Table
    GROUP BY OpenDate
     
  5. jcolor

    jcolor Гость

    Для: sax_ol
    Действительно :(

    Спасибо:D
     
Загрузка...

Поделиться этой страницей