如何在MySQL的SELECT语句中正确添加其他列?

戴维·西蒙·特特鲁阿什维利

我想提取在两个单独的月份(3月和4月)中发生的“表演”中“教练”的出勤人数(即COUNT())。我设法创建了一个查询,该查询仅在一个月内收集了该数字。另外,通过稍微修改查询,可以轻松找到第二个月的数字。但是,如何将它们合并到一个包含两列的表中?

因此,给定下面的两个查询和结果表,如何将查询2的结果“追加”到查询1的结果?换句话说,将如何组合它们各自的SELECT语句?

我提供了指向SQL小提琴的链接,以备需要时使用。

先感谢您。

SQL小提琴

查询1

SELECT C.*, COUNT(CIS.idCoach) AS MarchNumOfShows
FROM Coach AS C
  LEFT JOIN 
    (
        CoachInShow AS CIS
     LEFT JOIN
        TVShow AS S
     ON S.idShow = CIS.idShow
    )
  ON C.idCoach = CIS.idCoach AND S.airDate LIKE '_____04___'
  GROUP BY C.idCoach

结果

| idCoach |      name | surname | MarchNumOfShows |
|---------|-----------|---------|-----------------|
|       1 |   Stephen | Hawking |               5 |
|       2 |  Nicholas |    Cage |               7 |
|       3 | Sigourney |  Weaver |               6 |

查询2(最小差异,查询4月而不是3月):

SELECT COUNT(CIS.idCoach) AS AprilNumOfShows
FROM Coach AS C
  LEFT JOIN 
    (
        CoachInShow AS CIS
     LEFT JOIN
        TVShow AS S
     ON S.idShow = CIS.idShow
    )
  ON C.idCoach = CIS.idCoach AND S.airDate LIKE '_____05___'
  GROUP BY C.idCoach

结果

| AprilNumOfShows |
|-----------------|
|               8 |
|               7 |
|              10 |

想要

| idCoach |      name | surname | MarchNumOfShows | AprilNumOfShows |
|---------|-----------|---------|-----------------|-----------------|
|       1 |   Stephen | Hawking |               5 |               8 |
|       2 |  Nicholas |    Cage |               7 |               7 |
|       3 | Sigourney |  Weaver |               6 |              10 |
狮身人面像

您非常亲密,错过的最后一步是simply combine MarchNumOfShows and AprilNumOfShows with left join

像下面的代码(或查看Sql Fiddle):

SELECT C.idCoach, C.name, C.surname, COUNT(distinct CIS4.idShow) AS MarchNumOfShows
, COUNT(distinct CIS5.idShow) AS AprilNumOfShows
FROM Coach AS C
  LEFT JOIN 
    (
        CoachInShow AS CIS4
     LEFT JOIN
        TVShow AS S4
     ON S4.idShow = CIS4.idShow
    )
  ON C.idCoach = CIS4.idCoach AND S4.airDate LIKE '_____04___'
  LEFT JOIN 
    (
        CoachInShow AS CIS5
     LEFT JOIN
        TVShow AS S5
     ON S5.idShow = CIS5.idShow
    )
  ON C.idCoach = CIS5.idCoach AND S5.airDate LIKE '_____05___'
  GROUP BY C.idCoach;

下面是获取相同输出(或查看SQL Fiddle)的另一种方法

SELECT C.idCoach, C.name, C.surname, 
  sum(case when DATE_FORMAT(airDate,'%M')='April' then 1 else null end ) AS AprilNumOfShows, 
  sum(case when DATE_FORMAT(airDate,'%M')='May' then 1 else null end ) AS MayNumOfShows
FROM Coach AS C
  LEFT JOIN 
    (
        CoachInShow AS CIS
     LEFT JOIN
        TVShow AS S
     ON S.idShow = CIS.idShow
    )
  ON C.idCoach = CIS.idCoach 
  GROUP BY C.idCoach;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在单个语句中正确使用Select()和Where()

如何在狮身人面像项目中正确包含其他ReST文件?

如何在MySQL的INSERT语句中使用SELECT MAX?

如何在oracle select sql中的GROUP BY子句中获取不在列中的其他列?

如何在其他组件中正确设置h1?

如何在SQL的SELECT INTO语句中指定列格式?

无法弄清楚如何在ORDER BY子句中正确使用CASE WHEN语句

如何在Django集合查询的GROUP BY子句中正确包含列?

如何在SQL Server中的select语句中的列以外的XML路径的Stuff中添加按子句排序

如何在熊猫中正确添加图形

如何在片段着色器中正确绘制其他纹理?

如何在mysql中的select语句中过滤结果

如何在SQL select语句中基于另一列添加计算列

如何在我的php语句中正确执行此javascript?

如何在Sql中的select语句中替换列值?

如何在UITablViewCell中正确添加ChildViewControllers?

如何在select语句中添加列并在where子句中使用ir

如何在wordpress中正确添加简码?

根据其他列PSQL的值在SELECT语句中添加其他列

如何在计算中正确使用旋转框(或其他Tkinter小部件)中的值?

如何在Java import语句中正确配置缺少的符号?

在if语句中添加其他回显

如何在Guard语句中正确设置For-In循环?

如何在 /opt 中正确运行 AppImage 和其他程序?

如何在 Mysql 语句中添加选择性行

插入到将所有其他列设置为空的 select 语句中

如何根据其他列的结果运行SELECT语句?

如何在select语句中声明新列的类型?

如何在 ASP Classic 中正确使用 IF 语句中的 LIKE?