1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

формирование запроса

Тема в разделе "SQL", создана пользователем jcolor, 14 дек 2005.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. jcolor

    jcolor Гость

    Добрый день!

    есть таблица в которой такие поля:
    дата, №отдела, запись

    необходимо из этой таблицы сформировать такую статистику:
    сколько уникальных записей (по №отдела) было понедельно и помесячно
     
  2. Barmutik

    Barmutik Гость

    Всё зависит от того какой у Вас сервер БД... но для например MS SQL Server можно сделать так:

    Для месяцев:

    SELECT DISTINCT MONTH(Data), №отдела FROM YourTable

    Для недель:

    SELECT DISTINCT DATEPART(week, Data), №отдела FROM YourTable

    Я думаю что почти в любом сервере БД есть функции аналогичные использованным в запросе ...
     
  3. jcolor

    jcolor Гость

    Огромное спасибо!!!!!!!!!!!!
    это как раз то, что я и хотела получить
     
  4. jcolor

    jcolor Гость

    <!--QuoteBegin-Barmutik+15:12:2005, 10:42 -->
    <span class="vbquote">(Barmutik @ 15:12:2005, 10:42 )</span><!--QuoteEBegin-->SELECT DISTINCT DATEPART(week, Data), №отдела FROM YourTable
    [snapback]28406" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    использую такой запрос
    при этом данные группируются по номеру недели,
    а можно как-то получить дату начала и конца недели по номеру?

    например, чтобы получить значение не 48, а 28.11.2005-4.12.2005
    :)
     
  5. Barmutik

    Barmutik Гость

    Такксс.. задача интерсная .. сходу так решение и не приходит ...
     
  6. Barmutik

    Barmutik Гость

    Задача была интересная .. пришлось поломать голову немного ... Даже стало интересно B)

    Так для решения в наших условиях надо установить

    SET DATEFIRST что бы MS SQL Server понимал что понедельник у нас первый день недели а не воскресенье как у товарищей за океаном..

    Ну и сам запрос:

    Код (Text):
    SET DATEFIRST 1
    SELECT  DISTINCT CONVERT(varchar(10), CASE
    WHEN DATEPART(weekday, ADate) = 1 THEN ADate
    WHEN DATEPART(weekday, ADate - 1) = 1 THEN ADate - 1
    WHEN DATEPART(weekday, ADate - 2) = 1 THEN ADate - 2
    WHEN DATEPART(weekday, ADate - 3) = 1 THEN ADate - 3
    WHEN DATEPART(weekday, ADate - 4) = 1 THEN ADate - 4
    WHEN DATEPART(weekday, ADate - 5) = 1 THEN ADate - 5
    WHEN DATEPART(weekday, ADate - 6) = 1 THEN ADate - 6
    END, 104) + ' - ' +
    CONVERT(varchar(10), CASE
    WHEN DATEPART(weekday, ADate) = 7 THEN ADate
    WHEN DATEPART(weekday, ADate + 1) = 7 THEN ADate + 1
    WHEN DATEPART(weekday, ADate + 2) = 7 THEN ADate + 2
    WHEN DATEPART(weekday, ADate + 3) = 7 THEN ADate + 3
    WHEN DATEPART(weekday, ADate + 4) = 7 THEN ADate + 4
    WHEN DATEPART(weekday, ADate + 5) = 7 THEN ADate + 5
    WHEN DATEPART(weekday, ADate + 6) = 7 THEN ADate + 6
    END, 104), № отдела

    FROM  YourTable
    Получите то что надо!

    За такие запросы надо ставить пиво ;)
     
  7. jcolor

    jcolor Гость

    B)
    просто СУПЕР !!!!!!!!!!
    ОГРОМАДНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!

    будете в Киеве, заходите на пиво ;)
     
  8. Barmutik

    Barmutik Гость

    Удачи! ;)

    Да нет уж .. улчше Вы к нам .. да и лучше высылайте B) Мы тут примем ;)
     
Загрузка...
Статус темы:
Закрыта.

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