sql - 数很多

标签 sql grails count many-to-many hql

我在contactproject之间有很多关联。

contact:
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
+-----------------+--------------+------+-----+---------+----------------+

project:
+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| id                | int(11)      | NO   | PRI | NULL    | auto_increment |
+-------------------+--------------+------+-----+---------+----------------+

project_contact:
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| project_id    | int(11) | NO   | PRI | NULL    |       |
| contact_id    | int(11) | NO   | PRI | NULL    |       |
+---------------+---------+------+-----+---------+-------+

我想计算有多少个联系人与一个项目,一个项目或多个项目相关联。如果我可以在一个查询中得到它,那绝对是很棒的,否则,三个不同的查询也可以。

PS:我正在使用HQL,但是将SQL转换为HQL不会有问题。

谢谢!

最佳答案

我称之为“直方图直方图”查询。它基本上是聚合之上的聚合:

select NumProjects, count(*) as NumContacts
from (select c.id, count(pc.contact_id) as NumProjects
      from contacts c left join
           project_contacts pc
           on pc.contact_id = c.id
      group by c.id
     ) c
group by NumProjects
order by NumProjects;

关于sql - 数很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651736/

相关文章:

sql - 在表中 Access VBA 搜索和替换

SQL 记录出现次数

grails - 通过Groovy/Grails检测平台(Window或Linux)

mysql - MySQL 中的行项目计数

algorithm - 如何计算列表中的唯一项?

PHP 从下拉列表中检索表

MySQL 从存在 B 列的表中选择不同的 A 列,或者如果 B 列不存在,则根据 C 列选择最新的列

grails - 使用grails-spring-security-rest进行基于HTTP基本身份验证 token 的操作

grails - Spring Security Annotation应该是内联常量

javascript - Protractor :从原型(prototype)返回中继器计数