组合两个MySQL计数查询
我有一个包含列的表:NAME、CHANGE\u ID和CHANGE\u DATE,其中每一行构成一个单独的更改,列指示更改的人(NAME)、更改的时间(timestamp)和更改的ID(integer) 我可以通过以下查询检索按更改最多(上个月)的名称排序的名称列表:组合两个MySQL计数查询,mysql,sql,Mysql,Sql,我有一个包含列的表:NAME、CHANGE\u ID和CHANGE\u DATE,其中每一行构成一个单独的更改,列指示更改的人(NAME)、更改的时间(timestamp)和更改的ID(integer) 我可以通过以下查询检索按更改最多(上个月)的名称排序的名称列表: SELECT NAME AS name, COUNT(DISTINCT CHANGE_ID) AS changes FROM CHANGE_TABLE WHERE DATE(CHANGE_DATE)
SELECT
NAME AS name,
COUNT(DISTINCT CHANGE_ID) AS changes
FROM
CHANGE_TABLE
WHERE
DATE(CHANGE_DATE) > DATE(now() - INTERVAL 1 MONTH)
GROUP BY
name
ORDER BY
changes DESC
SELECT
DATE_FORMAT(CHANGE_DATE, '%Y-%m') AS date,
COUNT(DISTINCT CHANGE_ID) AS change_count
FROM
CHANGE_TABLE
WHERE
CHANGE_DATE > curdate() - INTERVAL 10 MONTH
GROUP BY
date
我可以通过以下查询检索过去10个月内每月所做更改的列表:
SELECT
NAME AS name,
COUNT(DISTINCT CHANGE_ID) AS changes
FROM
CHANGE_TABLE
WHERE
DATE(CHANGE_DATE) > DATE(now() - INTERVAL 1 MONTH)
GROUP BY
name
ORDER BY
changes DESC
SELECT
DATE_FORMAT(CHANGE_DATE, '%Y-%m') AS date,
COUNT(DISTINCT CHANGE_ID) AS change_count
FROM
CHANGE_TABLE
WHERE
CHANGE_DATE > curdate() - INTERVAL 10 MONTH
GROUP BY
date
我想要的是一个查询,它将返回这些查询的组合信息:我想要最重要的变更制定者的姓名,以及他们在过去10个月中每月进行了多少次变更。只要数据存在,我并不特别关心结果表的外观。我绞尽脑汁,但我对SQL的理解还不足以解决这个问题。任何帮助都将不胜感激。您是否尝试过按日期和名称分组,例如:
SELECT
DATE_FORMAT(CHANGE_DATE, '%Y-%m') AS date,
COUNT(DISTINCT CHANGE_ID) AS change_count,
NAME
FROM
CHANGE_TABLE, (SELECT
NAME AS name,
COUNT(DISTINCT CHANGE_ID) AS changes
FROM CHANGE_TABLE
WHERE DATE(CHANGE_DATE) > DATE(now() - INTERVAL 1 MONTH)
GROUP BY name
ORDER BY changes DESC
) subq
WHERE CHANGE_DATE > curdate() - INTERVAL 10 MONTH AND change_table.name = subq.name
GROUP BY date, name
我加上了
订单日期描述,更改计数描述
,它提供了我所需要的东西。谢谢你的帮助。好吧,我撒谎了。我实际需要它按日期顺序排列,然后我需要按照我上面问题的第一个查询结果中出现的相同顺序排列名称。。。有什么想法吗?