如何创建此查询?

时间:2020-06-25 05:13:45

标签: mysql sql

我在这里有这个MySQL查询:

SELECT
   COUNT(*) ReleasePerMonth,
   d.name as DevGroup_REGION 
FROM
   release_summary r 
   inner join
      gti_server_info g 
      on r.gti_server_id = g.gti_server_id 
   inner join
      dev_group d 
      on d.dev_group_id = g.dev_group_id 
WHERE
   r.testingFinishedOn_timestamp >= '2020-05-01 00:00:00' 
   AND r.testingFinishedOn_timestamp <= '2020-05-31 00:00:00' 
   AND r.test_type != 14 
GROUP BY
   d.name ;

现在,我希望每个月运行一次。也就是说,

   r.testingFinishedOn_timestamp >= '2019-01-01 00:00:00' 
   AND r.testingFinishedOn_timestamp <= '2019-01-31 00:00:00' 

   r.testingFinishedOn_timestamp >= '2019-05-02 00:00:00' 
   AND r.testingFinishedOn_timestamp <= '2019-02-31 00:00:00' 

到年底。目前,我正在手动执行此操作。有什么方法可以自动完成吗?

说明:

我希望在12个月中的每个月都有12张单独的桌子。

3 个答案:

答案 0 :(得分:1)

您可以尝试以下查询-使用SELECT year(r.testingFinishedOn_timestamp),month(r.testingFinishedOn_timestamp), COUNT(*) ReleasePerMonth FROM release_summary r inner join gti_server_info g on r.gti_server_id = g.gti_server_id inner join dev_group d on d.dev_group_id = g.dev_group_id WHERE r.testingFinishedOn_timestamp >= date_add(date_add(LAST_DAY(now()),interval 1 DAY),interval -12 MONTH) AND r.testingFinishedOn_timestamp <= LAST_DAY(now()) AND r.test_type != 14 GROUP BY year(r.testingFinishedOn_timestamp),month(r.testingFinishedOn_timestamp) ;

containers = driver.find_elements_by_xpath("//div[@class ='freebirdFormviewerViewNumberedItemContainer']")
for container in containers:
    radioOptions = container.find_elments_by_xpath("//div[@class='freebirdFormviewerComponentsQuestionRadioChoice freebirdFormviewerComponentsQuestionRadioOptionContainer']")
    if len(li) != 0:
        randIdx = numpy.random.randint(3)
        radioOptions[randIdx].click()

答案 1 :(得分:1)

尝试以下操作:

SELECT
   YEAR(r.testingFinishedOn_timestamp) year,
MONTH(r.testingFinishedOn_timestamp) month,
   COUNT(*) ReleasePerMonth,
   d.name as DevGroup_REGION 
FROM
   release_summary r 
   inner join
      gti_server_info g 
      on r.gti_server_id = g.gti_server_id 
   inner join
      dev_group d 
      on d.dev_group_id = g.dev_group_id 
WHERE
   r.test_type != 14 
GROUP BY
   YEAR(r.testingFinishedOn_timestamp),
   MONTH(r.testingFinishedOn_timestamp),
   d.name
ORDER BY year, month;

答案 2 :(得分:1)

一种可能的解决方案是查询整年的数据,并按 MONTH (testingFinishedOn_timestamp)分组。

我在下面添加了查询,但尚未测试:

SELECT
   MONTH(r.testingFinishedOn_timestamp) ReleaseMonth,
   COUNT(*) ReleasePerMonth,
   d.name as DevGroup_REGION 
FROM
   release_summary r 
   inner join
      gti_server_info g 
      on r.gti_server_id = g.gti_server_id 
   inner join
      dev_group d 
      on d.dev_group_id = g.dev_group_id 
WHERE
   r.testingFinishedOn_timestamp >= '2020-01-01 00:00:00' 
   AND r.testingFinishedOn_timestamp < '2021-01-01 00:00:00' 
   AND r.test_type != 14 
GROUP BY
   d.name, MONTH(r.testingFinishedOn_timestamp);
ORDER BY
  MONTH(r.testingFinishedOn_timestamp), d.name

基于可用的documentation,MONTH()函数返回月份号,例如,一月返回1。 如果要使用月份的名称,请使用MONTHNAME()函数而不是Month()。

相关问题