【问题标题】:return multiple counts from single table从单个表返回多个计数
【发布时间】:2014-02-18 16:27:00
【问题描述】:

我有一个如下格式的足球赛程表。

date date primary key
homescore int(4)
awayscore int(4)

数据按以下格式存储

DATE        |   HOMESCORE    |  AWAYSCORE
------------------------------------------
01-01-2014  |       1        |      0
08-01-2014  |       2        |      1
15-01-2014  |       1        |      1
22-01-2014  |       3        |      2
29-01-2014  |       0        |      0
06-02-2014  |       1        |      3  

等等……

我想运行一个查询来返回赢、输和平局的总数。

select count(*) as won from fixtures where homescore > awayscore;
select count(*) as lostfrom fixtures where homescore < awayscore;
select count(*) as drawnfrom fixtures where homescore = awayscore;

这个单一查询的结果看起来像......

Won      Lost      Drawn
3        1         2

请有人给我一些帮助。

【问题讨论】:

    标签: mysql sql select count case


    【解决方案1】:
    SELECT SUM(homescore > awayscore) AS won,
       SUM(homescore < awayscore) AS lost,
       SUM(homescore = awayscore) AS tie
    FROM ...
    

    &gt;&lt;= 的布尔结果将被 mysql 自动转换为整数 01,然后可以对其求和。

    【讨论】:

    • 出色的答案,正是我想要的。谢谢。
    【解决方案2】:

    SQL Fiddle:

    SELECT SUM(CASE WHEN homescore > awayscore THEN 1 ELSE 0 END) WonCount,
           SUM(CASE WHEN homescore < awayscore THEN 1 ELSE 0 END) LostCount,
           SUM(CASE WHEN homescore = awayscore THEN 1 ELSE 0 END) TieCount
    FROM fixtures 
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,根据这些答案,我整理了一个 SQL fiddle,您可以自己尝试一下。

      http://sqlfiddle.com/#!2/066ec2/1

      这是“父母”和“孩子”的人为示例,但它演示了获取连接表的“统计信息”的行为。感谢马克 B 的回答!

      【讨论】:

      • 如果您愿意,请在您的答案中发布相关部分,就像其他答案一样。它可以帮助以后找到此答案的人。谢谢
      猜你喜欢
      • 2023-01-28
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 2010-10-27
      • 2010-10-20
      • 2018-09-14
      • 2016-03-31
      • 2017-06-11
      相关资源
      最近更新 更多