使用POSTGRESQL进行SQL查询

使用POSTGRESQL进行SQL查询,sql,postgresql,Sql,Postgresql,我有以下疑问: SELECT DISTINCT "stylists".* FROM "stylists" INNER JOIN "category_stylists" ON "category_stylists"."stylist_id" = "stylists"."id" WHERE category_stylists.category_id IN (1,2) 但我想按类别给设计师排序 例如: Stylists id | Name 1 Sebastian 2 Jh

我有以下疑问:

SELECT DISTINCT "stylists".* FROM "stylists" 
INNER JOIN "category_stylists" ON "category_stylists"."stylist_id" = "stylists"."id" 
WHERE category_stylists.category_id IN (1,2)
但我想按类别给设计师排序

例如:

Stylists
id  |  Name
1      Sebastian
2      Jhon

Categories
id  |  Name
1      Wedding
2      Office

Stylist_Categories
id  | stylist_id |  category_id
1         1             1
2         2             1
3         2             2
所以,如果我应用我的查询,我得到了两个设计师,但我总是需要按照设计师拥有多少类别进行排序。我的意思是在这个例子中,Jhon将是第一行,因为它有category_id 1和category_id 2

预期结果:

Stylists
id  |  Name
2      Jhon
1      Sebastian

提前谢谢

尝试计算每个设计师的类别并按其排序:

SELECT "id","name" from(
    SELECT "stylists"."id", "stylists"."Name",count(stylists.id) as cnt FROM "stylists" 
    INNER JOIN "category_stylists" ON "category_stylists"."stylist_id" = "stylists"."id" 
    WHERE category_stylists.category_id IN (1,2)
    group by "stylists"."id", "stylists"."Name")
order by cnt desc

没问题@sebaMelgar。