【问题标题】:Count the number of entries in the table计算表中的条目数
【发布时间】:2015-06-17 12:26:31
【问题描述】:

我有一个表 allData

身份证名称 1 块肉 2 只鸡 3 条鱼 4 只鸡 5 条鱼 6 只鸡

和表相关数据

身份证名称 1 块肉 2 条鱼

我想计算allData 中每个名称的出现总数,但只计算出现在relevantData 中的名称。 IE。 我想得到的结果:

身份证姓名计数 1 肉 1 2 鱼 2

我想到了查询:

Select count(*) from allData group by name

不确定我与relevantData 的关系如何。有什么想法吗?

【问题讨论】:

  • 提示:join 2 个表,然后使用您的查询
  • 因为您实际上并不需要来自allData 的数据,只需计算relevantData 中的出现次数

标签: sql count


【解决方案1】:

换个角度,你对relevantData感兴趣,这是你查询的基础。您可以使用关联子查询,无需使用 join 或 group-by:

SELECT rd.name, 
       (SELECT COUNT(*) FROM allData ad WHERE rd.name = ad.name) AS Count
FROM relevantData rd

Demo

【讨论】:

    【解决方案2】:

    您可以尝试以下方法。

    SELECT COUNT(*) FROM allData WHERE name in (SELECT name from relevantData) GROUP BY name
    

    【讨论】:

      【解决方案3】:

      只需将它们连接在一起:

      SELECT  a.id, a.name, COUNT(*) AS CntCol
      FROM    allData a
              INNER JOIN relevantData r ON a.name = r.name
      GROUP BY a.id, a.name
      

      【讨论】:

        【解决方案4】:

        试试这个:

        SELECT a.name, Count(1) AS TotalCount
        FROM allData a
        WHERE EXISTS(SELECT TOP 1 1 FROM relevantData WHERE a.name = name)
        GROUP BY a.name
        

        只需按 id 分组并检查它是否包含在相关数据中

        【讨论】:

          猜你喜欢
          • 2020-09-30
          • 1970-01-01
          • 2018-06-22
          • 2016-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          相关资源
          最近更新 更多