sql - 得到一个不同的行及其值

标签 sql postgresql

所以我想在使用子查询时获得预期结果,但我的答案不会计划,下面是我的代码和结果以及我的预期结果

SELECT "Invoice"."BillingCountry", "Genre"."Name", COUNT("Track"."TrackId") FROM "Track"
INNER JOIN "Genre"
ON "Track"."GenreId" = "Genre"."GenreId"
INNER JOIN "InvoiceLine" 
ON "Track"."TrackId" = "InvoiceLine"."TrackId"
INNER JOIN "Invoice"
ON "InvoiceLine"."InvoiceId" = "Invoice"."InvoiceId"
WHERE "Invoice"."BillingCountry" in  ('USA', 'Canada', 'Brazil', 'france', 'Germany')
GROUP BY "Genre"."GenreId", "Invoice"."BillingCountry"
ORDER BY COUNT("Track"."TrackId") DESC 
LIMIT 10


billingcountry | name |  count
       usa       bat      50
       canada    bat      43
       usa       car      40
       usa       toy      39
       germany   bat      36
       france    bat      34
       canada    bike     20
       usa       fing     15
       brazil    bat      14
       france    shoe     10

预期结果

country    | item |  count
   usa       bat      50
   canada    bat      43
   germany   bat      36
   france    bat      34
   brazil    bat      14
   

我知道这里有类似的解决方案,但我不能让它们工作,如果有人可以提供帮助,我将不胜感激

最佳答案

您似乎想要每个国家/地区最受欢迎的类型。如果是这样,请使用DISTINCT ON:

SELECT DISTINCT ON (i."BillingCountry") i."BillingCountry", g."Name", COUNT(*)
FROM "Track" t JOIN
     "Genre" g
     ON t."GenreId" = g."GenreId" JOIN
     "InvoiceLine" il
     ON t."TrackId" = il."TrackId" JOIN
     "Invoice" i
     ON il."InvoiceId" = i."InvoiceId"
WHERE i."BillingCountry" in  ('USA', 'Canada', 'Brazil', 'France', 'Germany')
GROUP BY g."GenreId", i."BillingCountry"
ORDER BY i."BillingCountry", COUNT(*) DESC ;

请注意表别名如何使查询更易于编写和读取。我还会修复表定义,这样您就不必转义表和列名称——必须转义它们是一种非常非常糟糕的做法。

关于sql - 得到一个不同的行及其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66089690/

相关文章:

ruby-on-rails - PG::SyntaxError: 错误:在 Rails 中的生产模式

mysql - 带有 COUNT 的子查询 (mysql)

c# - 无法连接到 Sql Server Express 数据库

sql - 邮政编码 : SELECT : Query for number of rows which EXIST BETWEEN given range

linux - 在两个不同的虚拟机中使用一个虚拟磁盘

python - 无法使用 sqlalchemy 查询 json 列

mysql - 如何获取mysql中行的百分比

mysql - WordPress 数据库 : How to remove a word from all posts

sql - 如何统计图中常见的双向连接数

postgresql - postgres中的INTERVAL '0 days'和 '0 days'::INTERVAL有什么区别