sql从行开始按组计数

佩珀

我有桌子

Sport    Name   gender
----------------------
tennis   John     M
football David    M
football Jane     F
football Brad     M

我希望的结果是

Count Sport Gender
1      Tennis  M
0      tennis  F
2      football M
1      football F

到目前为止我能得到的就像

Count Sport Gender
4      Tennis  M
4      tennis  F
4      football M
4      football F

或者我只能数1个条件,例如网球和马累。

我已经阅读了聚合函数,但仍然无法实现。我想不出单独解决它的解决方案。

普雷迪普

这是一种方法,CROSS JOIN+ LEFT OUTER JOIN+COUNT

SELECT a.sport,
       b.gender,
       Count(c.sport) AS count
FROM   (SELECT DISTINCT sport
        FROM   yourtable) a
       CROSS JOIN (SELECT 'M' AS Gender
                   UNION ALL
                   SELECT 'F') b
       LEFT OUTER JOIN yourtable c
                    ON a.sport = c.sport
                       AND b.gender = c.gender
GROUP  BY a.sport,
          b.gender 

演示:

表架构和数据

CREATE TABLE yourtable
  (
     Sport  VARCHAR(50),
     NAME   VARCHAR(50),
     gender CHAR(1)
  );

INSERT INTO yourtable VALUES ('tennis','John','M' );
INSERT INTO yourtable VALUES ('football','David','M' );
INSERT INTO yourtable VALUES ('football','Jane','F' );
INSERT INTO yourtable VALUES ('football','Brad','M' ); 

结果

╔══════════╦════════╦═══════╗
║  sport   ║ gender ║ count ║
╠══════════╬════════╬═══════╣
║ football ║ M      ║     2 ║
║ football ║ F      ║     1 ║
║ tennis   ║ M      ║     1 ║
║ tennis   ║ F      ║     0 ║
╚══════════╩════════╩═══════╝

这里的关键是,由于您希望能够获得0计数,因此CROSS JOIN即使表中不存在符合该条件的行(例如,没有一位女网球选手的行),也需要获取所有可能的组合。 )。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sql从行开始按组计数

来自分类Dev

按组对行的顺序进行计数,并在每次组更改时重新开始计数

来自分类Dev

SQL按组串联计数

来自分类Dev

按组计数并崩溃

来自分类Dev

在SQL Alchemy中按日期计数行

来自分类Dev

如何获取按行分组的计数 - SQL

来自分类Dev

SQL帮助:更新日期时如何按组计数?

来自分类Dev

将行计数收集到新列中-按列文本并按组重置计数

来自分类Dev

SQL查询可对按ID分组的行进行计数,但可限制每个组的计数

来自分类Dev

基于开始和结束的 MS SQL 组行

来自分类Dev

组内的SQL计数

来自分类Dev

SQL Server-按组选择前x行

来自分类Dev

按 ID SQL Server 的行到列组

来自分类Dev

按组从前一行sql中减去值

来自分类Dev

使用Python中的Pandas时,请仅选择按组计数为1的行

来自分类Dev

使用Big Query按计数从组中选择第一行

来自分类Dev

使用Big Query按计数从组中选择第一行

来自分类Dev

使用dplyr按组获取累计计数

来自分类Dev

熊猫中按组的价值计数

来自分类Dev

DAX按组计数最大值

来自分类Dev

夏季不适用,按组计数

来自分类Dev

在水晶报表中按组计数

来自分类Dev

按计数过滤sphinxql组

来自分类Dev

选择,计数和显示(按组?)

来自分类Dev

如何按计数加入表组

来自分类Dev

R按组计数元素的出现次数

来自分类Dev

MySQL组按2列计数?

来自分类Dev

按组求和和计数值

来自分类Dev

按组移动窗口计数不同