gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:08:40 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com