SQL如何分组和计数

标签 sql

我有以下查询

 SELECT c.`name` as categories,times_booked.booked as booked
              FROM req_profiles rq                
                                inner join categories as c on c.id = rq.category_id
              left join 
                (
                SELECT rq.id, COUNT(rq.id) as booked
                FROM req_profiles as rq
                inner join profile_matchings as pm on pm.req_profile_id = rq.id
                WHERE pm.`status` =  'booked'
                AND rq.user_id = 736
                AND (pm.created_at BETWEEN '2018-01-01 00:00' AND '2019-02-13 00:00')
                GROUP BY rq.id
                ) as times_booked on times_booked.id = rq.id

              where rq.user_id=736
                                and rq.`status` = 'active'

              ORDER BY times_booked.booked,rq.id desc           
                                limit 5

这就是我得到的:

categories| booked
-------------------
  Talent      NULL
  Talent       1
  Talent       1

但我想得到这样的结果:

categories| booked
-------------------
  Talent      2

感谢您的帮助!

最佳答案

使用您的查询作为子查询 anf group by

select categories, count(booked)
from (
     SELECT c.`name` as categories,times_booked.booked as booked
                  FROM req_profiles rq                
                                    inner join categories as c on c.id = rq.category_id
                  left join 
                    (
                    SELECT rq.id, COUNT(rq.id) as booked
                    FROM req_profiles as rq
                    inner join profile_matchings as pm on pm.req_profile_id = rq.id
                    WHERE pm.`status` =  'booked'
                    AND rq.user_id = 736
                    AND (pm.created_at BETWEEN '2018-01-01 00:00' AND '2019-02-13 00:00')
                    GROUP BY rq.id
                    ) as times_booked on times_booked.id = rq.id

                  where rq.user_id=736
                                    and rq.`status` = 'active'

                  ORDER BY times_booked.booked,rq.id desc           
                                    limit 5
    ) t 
    group by categories 

关于SQL如何分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54697959/

相关文章:

mysql - 用于传输数据库更改的工具?

mysql - 根据 IP 地址对大量帖子进行地理定位。 (880,000 行)

sql - 需要远程或基于 Web 的 MS Access SQL 工具(例如类似于 PhpMyAdmin,但基于 ColdFusion)

sql递归函数-寻找管理者

SQL 选择通过至少一个公共(public)属性值与记录相交?

mysql if 语法错误

mysql - 我如何在 SQL 中组合这两个表,以便第一个表的每一行都有第二个表中每一行的副本?

MySql 自连接子内部连接返回交叉连接

java - 如何从 Java 和 JPA 调用存储过程

mysql - 检索内连接中表的最后一条记录