多个查询合并为一个查询

Multiple queries into one query

我正在尝试将多个查询合并为一个。有人有什么想法吗?

SELECT In_year, 计数(In_year) AS Num_Of_Year 来自实习 分组 In_year;

SELECT In_qtr, 计数(In_qtr) AS Num_Of_Qtr 来自实习 分组 In_Qtr;

SELECT In_location, 计数(In_location) AS Num_Of_Location 来自实习 分组 In_location;

如果我 运行 这些查询中的每一个,我都会在结果中得到我想要的。我的问题是我无法弄清楚如何将这 3 个查询合并为 1 个,我试图将它们组合起来,但最终得到了错误的输出。谢谢!

也许 UNION 子句并稍微组织一下可以解决问题:

SELECT 'Year' As Topic, In_year As Value, count(In_year) AS Count 
FROM INTERNSHIP 
GROUP BY In_year

UNION ALL

SELECT 'Qtr' As Topic, In_qtr As Value, count(In_qtr) AS Count 
FROM INTERNSHIP 
GROUP BY In_Qtr

UNION ALL

SELECT 'Location' As Topic, In_location As Value, count(In_location) AS Count
FROM INTERNSHIP 
GROUP BY In_location;

这是在单个查询中显示它的唯一方法,因为三个 SELECT 会有不同的行数,所以您不能以自然形式添加列。

我们可以使用 INTERNSHIP table 作为驱动列表来连接其他 "group by" SQL:

select
   t1.In_year, y.Num_Of_Year,
   t1.In_qtr, q.Num_Of_Qtr,
   t1.In_location, l.Num_Of_Location
FROM
  (select distinct In_year, In_qtr, In_location from INTERNSHIP)  t1
   join (SELECT In_year, count(In_year) AS Num_Of_Year FROM INTERNSHIP GROUP BY In_year) y on t1.In_year = y.In_year
   join (SELECT In_qtr, count(In_qtr) AS Num_Of_Qtr FROM INTERNSHIP GROUP BY In_Qtr) q on t1.In_Qtr = q.In_Qtr
   join (SELECT In_location, count(In_location) AS Num_Of_Location FROM INTERNSHIP GROUP BY In_location) l on t1.In_location = l.In_location