Подсчет записей за первый день каждого месяца в году - PullRequest
0 голосов
/ 04 марта 2020

У меня в таблице с 4 столбцами огромное количество записей. Он имеет следующую структуру:

DATE_ENTERED    EMP_NAME     DATA       ORIGINATED
01-JAN-20        A          545454        APPLE

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

. Есть ли способ получить данные для каждого первого день месяца.

Ответы [ 4 ]

1 голос
/ 04 марта 2020

В oracle вы можете использовать функцию TRUNC для даты следующим образом:

SELECT TRUNC(DATE_ENTERED), COUNT(1) AS CNT
FROM YOUR_TABLE
WHERE TRUNC(DATE_ENTERED) = TRUNC(DATE_ENTERED, 'MON')
GROUP BY TRUNC(DATE_ENTERED, 'MON')

Обратите внимание, что TRUNC(DATE_ENTERED, 'MON') возвращает первый день месяца для DATE_ENTERED.

Ура !!

0 голосов
/ 04 марта 2020

Вы можете использовать что-то вроде этого:

select * from your_table
where DAY(DATE_ENTERED) = 1
and DATE_ENTERED between '2020-01-01' and '2020-12-31'

для подсчета количества используйте это:

select count(*) from your_table
where DAY(DATE_ENTERED)= 1
and DATE_ENTERED between '2020-01-01' and '2020-12-31'

ОБНОВЛЕНИЕ

select * from your_table where Extract(day FROM DATE_ENTERED) = 1 and DATE_ENTERED between '01-JAN-20 ' and '01-DEC-20 ';

вот так выглядят данные:

enter image description here

Для списка записей

select count(*) from your_table where Extract(day FROM DATE_ENTERED) = 1 and DATE_ENTERED between '01-JAN-20 ' and '01-DEC-20 ';

enter image description here

ОБНОВЛЕНИЕ-2

select EXTRACT(month from DATE_ENTERED) as Count, 
to_char(to_date(DATE_ENTERED, 'DD-MM-YYYY'), 'Month') from your_table 
where Extract(day FROM DATE_ENTERED) = 1 and DATE_ENTERED between '01-JAN-20 
'and '01-DEC-20 ' group by EXTRACT(month from DATE_ENTERED),  
to_char(to_date(DATE_ENTERED, 'DD-MM-YYYY'), 'Month');

Вот вывод:

enter image description here

0 голосов
/ 04 марта 2020

Вы имеете в виду что-то вроде

SELECT COUNT(*) 
FROM Table 
WHERE DAY(DATE_ENTERED) = 1 AND
      YEAR(DATE_ENTERED) = Some_Year
GROUP BY DATE_ENTERED

Вы также можете использовать DATE_ENTERED BETWEEN 'YYYY0101' and 'YYYY1231' (замените YYYY на год, для которого вы хотите получить данные) вместо YEAR(DATE_ENTERED) = Some_Year, если производительность является проблемой.

0 голосов
/ 04 марта 2020
SELECT Year, Month, COUNT(*)
FROM
(
  SELECT 
  YEAR(DATE_ENTERED) Year
  MONTH(DATE_ENTERED) Month
  DAY(DATE_ENTERED) Day
  FROM your_table
  WHERE DAY(DATE_ENTERED) = 1
) A 
GROUP BY Year, Month

Как правило, WHERE DAY(DATE_ENTERED) = 1 будет получать записи только для дат в начале каждого месяца. Таким образом, используя функцию «Год и месяц», вы можете сгруппировать их, чтобы получить счет за каждый год и каждый месяц

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...