mysql - 统计相似属性值

标签 mysql sql

我正在处理(练习)具有下表结构的数据集。我已经开发了不同的查询并且到目前为止已经成功。然而,有两个问题困扰着我,我想知道你们是否可以指出我做错了什么。

1:需要提取在项目“abc”上创建最多更改的前 10 个 AuthorAccountId。

例如,返回在项目“abc”上创建最多更改的前 10 个 AuthorAccountId。该查询必须返回两列:authorId 和每个作者所做的更改数量。

以下是我开发的查询,但没有给我想要的结果。

SELECT ch_authoraccountid,count(ch_project)
FROM t_change 
WHERE ch_project LIKE 'abc' 
ORDER BY ch_authoraccountId DESC 
LIMIT 10

2:返回2017年期间未提交任何更改的作者姓名(这将是t_change上的子查询)。

例如,预期结果应返回 2017 年未进行任何更改的作者姓名。

以下是查询

SELECT p_name 
FROM t_people 
WHERE p_accountid IN (SELECT ch_createdTime 
                      FROM t_change 
                      WHERE ch_createdTime != '2016-01-01')")

引用文献:Yang、R. G. Kula、N. Yoshida 和 H. Iida,“挖掘现代代码审查存储库:人员、流程和产品的数据集”,2016 年 IEEE/ACM 第 13 届挖掘软件存储库 (MSR) 工作 session ,德克萨斯州奥斯汀,2016 年,第 17 页。 460-463。

https://github.com/kin-y/miningReviewRepo/wiki/Database-Schema

ER diagram

最佳答案

对于第一个查询,请尝试以下操作:

SELECT ch_authoraccountid, COUNT(ch_project)
FROM t_change 
WHERE ch_project = 'abc' 
GROUP BY ch_authoraccountid
ORDER BY COUNT(ch_project) DESC 
LIMIT 10

它将计算每个作者帐户 ID 的“abc”项目中的更改数量。

对于第二个:

SELECT p_name 
FROM t_people 
WHERE p_accountid NOT IN (SELECT ch_authorAccountId 
                          FROM t_change 
                          WHERE ch_createdTime BETWEEN '20170101' AND '20171231')")

关于mysql - 统计相似属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55092743/

相关文章:

php - 修改一个帖子报错,简单的php编辑表单

sql - 用户可以在其中创建数据类型的数据库

c# - LINQ 查询其中 ID 不作为对象列表中的属性存在

MySQL 多数据库模式更新 => 性能

MySQL 获取减法的返回值

mysql - Apache 方解石 :parse failed: Encountered "from\""

PHP SQL查询无法执行

php - GroupBy 和 where 条件 NOT IN 不能同时工作

mysql - 从查询中添加/填充 MySQL 表索引

sql - 计算连接表的列