сумма записей, полученных с помощью группы по выражению - PullRequest
0 голосов
/ 08 января 2020

Я хочу рассчитать общее количество периодов, проведенных до даты? Ниже приведена структура моей базы данных ... и может быть два предмета за один раз (факультативы)

section  period  subject     date
------------------------------------
A        1       SUB1     2020-01-07
A        2       E1       2020-01-07
A        2       E2       2020-01-07
A        3       SUB2     2020-01-07
A        4       SUB3     2020-01-07
A        5       SUB4     2020-01-07
A        1       SUB4     2020-01-08
A        2       SUB2     2020-01-08
A        3       E1       2020-01-08
A        3       E2       2020-01-08
A        4       SUB1     2020-01-08
A        5       SUB3     2020-01-08

И я использовал запрос следующим образом:

select count(distinct period) 'noofper' 
from testtable 
where section='A' 
and date<="2020-01-08" 
group date

И я получаю результат как

noofper
--------
5
5

И я хочу получить результат как

noofper
-------
10

И как я могу изменить запрос, чтобы я получил выше результата?

Ответы [ 2 ]

1 голос
/ 08 января 2020

Удалить Group BY и объединить date и period в вашем Count

SELECT COUNT(Distinct CONCAT(CAST(period AS CHAR),CAST(DAYOFYEAR(date) AS CHAR))) 'noofper' 
FROM testtable 
WHERE section ='A' AND date <= "2020-01-08" 

DB FIDDLE

Обновлено

SELECT COUNT(Distinct period, date) 'noofper' 
FROM testtable 
WHERE section ='A' AND date <= "2020-01-08" 

FIDDLE DEMO

0 голосов
/ 08 января 2020

вы можете использовать сумму без группы, чтобы сделать это

    select count(distinct period) 'noofper' from testtable where section='A' and date<="2020-01-08" 

, если вы можете использовать другую логику c, тогда вы используете subquery + sum, чтобы сделать это

select sum('noofper') 'noofper' 
from (
    select count(distinct period) 'noofper' from testtable where section='A' and date<="2020-01-08" group date
    /*some logic*/
) T

и результат:

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