Mysql 对电影的国别分析

Mysql 对电影的国别分析,mysql,sql,Mysql,Sql,编写一个查询以查找每个国家的电影出租数量。仅显示至少租用了一部电影的国家/地区。按字母顺序排列这些国家 DB: 下面是编写的代码 select e.country, count(a.rental_id) as rental_count from rental a left outer join customer b ON (a.customer_id=b.customer_id) left outer join address c ON (b.address_id=c.address_

编写一个查询以查找每个国家的电影出租数量。仅显示至少租用了一部电影的国家/地区。按字母顺序排列这些国家

DB:

下面是编写的代码

select e.country, count(a.rental_id) as rental_count
from rental a
left outer join customer b ON   (a.customer_id=b.customer_id)
left outer join address c ON    (b.address_id=c.address_id)
left outer join city d ON       (c.city_id=d.city_id)
left outer join country e ON    (d.country_id=e.country_id)
group by country 
order by rental_count >=1
我的输出显示如下

*************************** 1. row ***************************
Angola
4
*************************** 2. row ***************************
American Samoa
4
*************************** 3. row ***************************
Afghanistan
4
*************************** 4. row ***************************
Algeria

2
*************************** 5. row ***************************
New Zealand
1

如何将输出转换为字母顺序

我猜您希望按国家名称acc\u account\u交易对结果进行排序,而不是按计数

order by e.country
order by e.country

您可能混淆了顺序和拥有

仅显示至少租用了一部电影的国家/地区

这就是你试图做到的:

order by rental_count >=1
但要对聚合列进行筛选,应使用HAVING子句:

having rental_count >=1
但是-您可以通过使用
内部联接
而不是
左侧外部联接
来实现相同的功能。那么在这种情况下就不需要HAVING子句了

ORDERBY子句用于按特定顺序获取结果。如果希望按字母顺序对国家进行排序,可以使用


你能解释一下结果应该是怎样的吗?结果应该是按字母顺序的在这一点上,在任何基本的,关于关系数据库的介绍性书籍或教程将被证明是有益的。我希望这些国家的名称按字母顺序显示。如我所写的更改顺序,您将获得正确答案。当您运行查询时感谢您将其更改为内部联接后工作正常,感谢您将其更改为内部联接后工作正常请解释一下你的代码是做什么的。没有解释的代码对未来的读者来说是无用的。查询以查找每个国家租用的电影数量。仅显示至少租用了一部电影的国家/地区。按照字母顺序排列这些国家/地区。社区鼓励按代码添加解释,而不是纯粹基于代码的答案(请参阅)。请用您的解释来回答问题,而不是将其作为注释添加。社区鼓励在代码中添加解释,而不是纯粹基于代码的答案(请参阅)。请添加解释。
select country, count(rental_id>=1) as rental_count
from rental
join customer using (customer_id)
join address using (address_id)
join city using (city_id)
join country using (country_id)
group by country
order by country desc;
use upgrad;

select Country, count(rental_id) as Rental_count
from rental
inner join customer
using (customer_id)
inner join address
using (address_id)
inner join city
using (city_id)
inner join country
using (country_id)
group by country
order by country;
select country,count(rental_id) from country
inner join city using (country_id)
inner join address using (city_id)
inner join customer using (address_id)
inner join rental using (customer_id)
group by country
having count(rental_id)>0
order by country asc;