Mysql-запрос для определения количества (id) каждого месяца-года - PullRequest
0 голосов
/ 25 июня 2019

Я работаю над рефакторингом моего кода. И я пытаюсь получить результат скрипта Python в одном запросе.

Я пытался сделать это:

  select year(created), month(created), count(*) as total_id
  from repository_clinicaltrial
  group by id, year(created), month(created)
  order by id, year(created), month(created);

чтобы получить количество идентификаторов каждого МЕСЯЦА.

Используя python, я делаю так:

dic_months = {1: "jan",
         2: "fev",
         3: "mar",
         4: "abr",
         5: "mai",
         6: "jun",
         7: "jul",
         8: "ago",
         9: "set",
         10: "out",
         11: "nov",
         12: "dez"
        }

def retorna_dic_report(yearI):

    yearN = yearI + 1


    query_report = 'select created from repository_clinicaltrial where created >= "%s-01-01" and created < "%s-01-01";' % (yearI,
                                                                                                                          yearN)


    db = MySQLdb.connect(host= host,
                  user= user,
                  passwd= pass,
                  db= db)
    cur = db.cursor()


    cur.execute(query_report)

    dic_result = {}
    for row in cur.fetchall():
            try:
               dic_result[dic_months[row[0].month]] = dic_result[dic_months[row[0].month]] + 1
            except:
               if row[0].month == 12:
               dic_result[dic_months[row[0].month]] = 1

    return dic_result

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

возможно ли это?

1 Ответ

1 голос
/ 25 июня 2019

Вы хотите одну строку в год и месяц, так что это должно быть то, что в group by. У вас также есть id, что кажется неправильным. Итак:

select year(created), month(created), count(*) as total_id
from repository_clinicaltrial
group by year(created), month(created)
order by year(created), month(created);

Примечание: если вы пропустите даты в конкретном месяце, это не будет в вашем наборе результатов. Я не уверен, относится ли это к вашему вопросу.

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