Create a query to select two columns; (Company, No. of Films) from the database

﹥>﹥吖頭↗ 提交于 2019-12-25 06:12:29

问题


I have created a database as part of university assignment and I have hit a snag with the question in the title.

More likely I am being asked to find out how many films each company has made. Which suggests to me a group by query. But I have no idea where to begin. It is only a two mark question but the syntax is not clicking in my head.

My schema is:

CREATE TABLE Movie
    (movieID CHAR(3) ,
    title CHAR(36),
    year NUMBER,
    company CHAR(50),
    totalNoms NUMBER,
    awardsWon NUMBER,
    DVDPrice NUMBER(5,2),
    discountPrice NUMBER(5,2))

There are other tables but at first glance I don't think they are relevant to this question.

I am using sqlplus10


回答1:


The answer you need comes from three basic SQL concepts, I'll step through them with you. If you need more assistance to create an answer from these hints, let me know and I can try to keep guiding you.

Group By

As you mentioned, SQL offers a GROUP BY function that can help you.

A SQL Query utilizing GROUP BY would look like the following.

SELECT list, fields, aggregate(value)
FROM tablename
--WHERE goes here, if you need to restrict your result set
GROUP BY list, fields

a GROUP BY query can only return fields listed in the group by statement, or aggregate functions acting on each group.


Aggregate Functions

Your homework question also needs an Aggregate function called Count. This is used to count the results returned. A simple query like the following returns the count of all records returned.

SELECT Count(*)
FROM tablename

The two can be combined, allowing you to get the Count of each group in the following way.

SELECT list, fields, count(*)
FROM tablename
GROUP BY list, fields

Column Aliases

Another answer also tried to introduce you to SQL column aliases, but they did not use SQLPLUS syntax.

SELECT Count(*) as count
...

SQLPLUS column alias syntax is shown below.

SELECT Count(*) "count"
...



回答2:


I'm not going to provide you the SQL, but instead a way to think about it.

What you want to do is select where the company matches and count the total rows returned. That count is the number of films made by the specified company.

Hope that points you in the right direction.




回答3:


Select company, count(*) AS count 
from Movie 
group by company

select * group by company won't work in Oracle.



来源:https://stackoverflow.com/questions/9927772/create-a-query-to-select-two-columns-company-no-of-films-from-the-database

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!