社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

bemzoo • 5 年前 • 1660 次点击  

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

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
 
1660 次点击  
文章 [ 2 ]  |  最新文章 5 年前