Py学习  »  DATABASE

mysql-仅显示最常见的列组合&所有其他列组合显示0

bemzoo • 5 年前 • 1646 次点击  

我试图计算出一场比赛中撞车次数最多的一辆车,所以一辆车在一场比赛中可能会发生多起撞车事故(形象地说)。我有一个包含以下列的崩溃表:

c_raceName , c_raceDate , c_raceId 以及其他不相关的事情。

首先,为了唯一地识别一个种族 raceName raceDate 一对。要唯一识别崩溃,必须在 raceId .

所以所有这些列实际上都属于另一个表 Entry 表。此表包含参加比赛的汽车的信息。此表包含以下列:

e_raceId , e_raceDate , e_raceName , e_raceEntryCarId , e_raceEntryDriverId .

我意识到并不是每一场比赛都会参加 Crash 桌子,所以我想我要提到 条目 中的表 撞车 桌子,或者其他地方。

尽管如此,如果还没有包含比赛项目的数据呢? raceNAMEY 赛马场 一对数据只存在于 Race 放置 r_raceName r_raceDate 基本信息。

所以我想我应该做的是 SELECT 撞车 表,以及 JOIN 下到 条目 桌子,再往前 种族 真正得到一切的桌子 raceNAMEY 赛马场 对。尽管我不知道如何写一个条件,如果这些对不存在于 撞车 表,那么在我的输出中,我希望它们被赋予0的值,或者让它们实际上出现在我的输出中。

所以我走到了这一步:

SELECT DISTINCT l.c_raceName AS raceName, 
l.c_raceDate AS raceDate, 
COUNT( l.c_raceId) AS mostCrashes 

FROM Crashes l
GROUP BY l.c_raceId
;

产出:

raceName | raceDate | mostCrashes
---------------------------------
Race 1   |2018/01/21| 1
Race 1   |2018/01/21| 3
...      | ...      | ...

所以我可以将它们分为3和1,如上所示,尽管我只希望显示大多数崩溃,所以3行。另外,我希望所有没有任何崩溃的比赛都显示为0,而不是完全不显示。所以我想要的结果是:

raceName | raceDate | mostCrashes
---------------------------------
Race 1   |2018/01/21| 3
Race 2   |2018/01/21| 5
Race 1   |2018/09/11| 0
Race 1   |2016/03/14| 0

等。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43517
 
1646 次点击  
文章 [ 2 ]  |  最新文章 5 年前