【问题标题】:How to sort a table by the count of it column?如何按列的计数对表进行排序?
【发布时间】:2021-08-08 09:23:15
【问题描述】:

我有这张桌子:

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) 
    
    
);

我想创建一个视图,返回按发表文章数量排序的教授,所以我创建了这个视图:

CREATE OR REPLACE VIEW ViewTopAutors AS 
SELECT  professorId 
FROM publications
WHERE autors < 5
ORDER by COUNT(professorId)
LIMIT 3;

我已经填充了主表,但是当我运行视图时它只返回一个 autor(具有最高 Id 的那个)

¿我该怎么做?

【问题讨论】:

    标签: sql mariadb heidisql


    【解决方案1】:

    我认为您的查询中缺少聚合:

    CREATE OR REPLACE VIEW ViewTopAutors AS
    SELECT professorId
    FROM publications
    WHERE autors < 5
    GROUP BY professorId
    ORDER BY COUNT(*)
    LIMIT 3;
    

    这将返回发表最少篇文章的 3 位教授。要返回前 3 名的教授,请在 ORDER BY 步骤中使用 DESC 排序。

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 2015-10-19
      • 2022-01-06
      • 2018-06-08
      • 2010-11-18
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多