Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выбор данных  [new]
maximus_m101
Member

Откуда:
Сообщений: 13
Всем доброго времени суток
начал реализовывать одну статистику и столкнулось с такой проблемой
есть таблица с данными (см. рис.)

нужно подсчитать количество пробелов поля pos для каждого работника за каждый день

например, для 1 дня, для 1 работника, количество пропусков составляет 2 (нет 2 и 4)
для 2 дня, для 1 работника, количество пропусков составляет 0
для 3 дня, для 1 работника, количество пропусков составляет 2 (нет 2 и 3)



если у кого есть какие мнения на счет данного вопроса, то помогите пожалуйста, заранее спасибо

К сообщению приложен файл. Размер - 26Kb
24 ноя 11, 15:01    [11652037]     Ответить | Цитировать Сообщить модератору
 Re: Выбор данных  [new]
fabulaspb
Member

Откуда: Санкт-Петербург
Сообщений: 34
Количество пробелов в поле pos для каждого работника за каждый день, не учитывая концевых пробелов, можно подсчитать следующим образом:

SELECT date, emp_id, SUM(spaces_qty) as qty FROM
   (SELECT date, emp_id, LEN(REPLACE(pos, ' ', '$$')) - LEN(pos) as spaces_qty FROM tbl_name) AS tmp
GROUP BY date, emp_id
24 ноя 11, 15:10    [11652128]     Ответить | Цитировать Сообщить модератору
 Re: Выбор данных  [new]
fabulaspb
Member

Откуда: Санкт-Петербург
Сообщений: 34
fabulaspb,
Извините, не отобразилось приложенное к посту изображение:

SELECT id_day, id_worker, MAX(diff) as qty FROM
   (SELECT id_day, id_worker, pos - row_num as diff FROM
     (SELECT ROW_NUMBER() OVER(partition by id_day, id_worker order by pos) as row_num,  id_day, id_worker, pos FROM tbl_name) AS tmp
   ) as tmp2
GROUP BY id_day, id_worker
24 ноя 11, 15:20    [11652207]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить