如何按 it 列的计数对 table 进行排序?
How to sort a table by the count of it column?
我有这个table:
CREATE TABLE Publications (
publicationId INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (publicationId),
title VARCHAR(60) NOT NULL UNIQUE,
professorId INT NOT NULL,
autors INT NOT NULL,
magazine VARCHAR(60) NOT NULL,
post_date DATE NOT NULL,
FOREIGN KEY (professorId) REFERENCES Professors (professorId),
CONSTRAINT invalidPublication UNIQUE (professorId, magazine, post_date),
CONSTRAINT invalidAutors CHECK (autors >= 1 AND autors <= 10)
);
我想创建一个视图,returns 教授们按照他们发表的论文数量排序,所以我创建了这个视图:
CREATE OR REPLACE VIEW ViewTopAutors AS
SELECT professorId
FROM publications
WHERE autors < 5
ORDER by COUNT(professorId)
LIMIT 3;
我填充了主要 table,但是当我 运行 视图时它只有 returns 一个作者(具有最高 ID 的那个)
¿我该怎么做?
我认为您的查询中缺少聚合:
CREATE OR REPLACE VIEW ViewTopAutors AS
SELECT professorId
FROM publications
WHERE autors < 5
GROUP BY professorId
ORDER BY COUNT(*)
LIMIT 3;
这将 return 发表论文数量最少 的 3 位教授。对于 return 位最优秀的 3 位教授,请在 ORDER BY
步骤中使用 DESC
排序。
我有这个table:
CREATE TABLE Publications (
publicationId INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (publicationId),
title VARCHAR(60) NOT NULL UNIQUE,
professorId INT NOT NULL,
autors INT NOT NULL,
magazine VARCHAR(60) NOT NULL,
post_date DATE NOT NULL,
FOREIGN KEY (professorId) REFERENCES Professors (professorId),
CONSTRAINT invalidPublication UNIQUE (professorId, magazine, post_date),
CONSTRAINT invalidAutors CHECK (autors >= 1 AND autors <= 10)
);
我想创建一个视图,returns 教授们按照他们发表的论文数量排序,所以我创建了这个视图:
CREATE OR REPLACE VIEW ViewTopAutors AS
SELECT professorId
FROM publications
WHERE autors < 5
ORDER by COUNT(professorId)
LIMIT 3;
我填充了主要 table,但是当我 运行 视图时它只有 returns 一个作者(具有最高 ID 的那个)
¿我该怎么做?
我认为您的查询中缺少聚合:
CREATE OR REPLACE VIEW ViewTopAutors AS
SELECT professorId
FROM publications
WHERE autors < 5
GROUP BY professorId
ORDER BY COUNT(*)
LIMIT 3;
这将 return 发表论文数量最少 的 3 位教授。对于 return 位最优秀的 3 位教授,请在 ORDER BY
步骤中使用 DESC
排序。