【问题标题】:Get school count and grade count using group by in mysql query在 mysql 查询中使用 group by 获取学校计数和年级计数
【发布时间】:2020-02-08 09:10:34
【问题描述】:

我想获得总学校的计数,其中包括该学校的总成绩,如果学校计数不应该考虑重复的学校 ID。和包括学校 1 和学校 2 在内的总成绩的计数,我想要使用单个查询来实现,是否有可能得到预期输出中提到的结果。

表:

school_id      grade

  1             1

  2             1


  1             3

  1             4

预期输出:

1) school count=2

2) grade count for individual school like

    school_id   grade_count

      1           3
      2           1

3)  total grade count  (school 1+school2)=4

我使用了这个 Mysql 查询,但它没有按要求工作以获取所有三个输出

Mysql查询:

select count(*) as total_school,count(grade) from (SELECT grade FROM schools group by school_id)X 

【问题讨论】:

    标签: mysql group-by count


    【解决方案1】:
    SELECT 
      `school_id`,
      (SELECT COUNT(DISTINCT `school_id`) FROM `school_grade`) as different_school_count,
      COUNT(*) as school_count,
      COUNT(DISTINCT `grade`) as grade_count,
      (SELECT COUNT(*) FROM `school_grade`) as total_grade_count
    FROM
      `school_grade`
    GROUP BY `school_id`
    

    输出:

    | school_id | different_school_count | school_count | grade_count | total_grade_count |
    |-----------|------------------------|--------------|-------------|-------------------|
    |         1 |                      2 |            3 |           3 |                 4 |
    |         2 |                      2 |            1 |           1 |                 4 |
    

    http://sqlfiddle.com/#!9/9132c7/16

    【讨论】:

    • 但是对于 school_id=2 (school_count) 应该是 1,因为它在表中只出现了一次
    • 我们是否需要编写 2 个单独的查询来实现这一点?
    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多