SQL选择总条件



我正在研究SQL(我自己),我想知道这些示例我该怎么做:

1-我会创建这3张表:

CREATE TABLE Business (
    Id INT,
    Category INT,
    Business_Name VARCHAR(30),
    City_Id INT,
    Billing INT
);
INSERT INTO business (Id, Category, Business_Name, City_Id, Billing) VALUES(1, 1, 'Bread', 1, 50);
INSERT INTO business (Id, Category, Business_Name, City_Id, Billing) VALUES(2, 2, 'Oreo', 2, 10);
INSERT INTO business (Id, Category, Business_Name, City_Id, Billing) VALUES(3, 2, 'Pizza', 3, 15);
INSERT INTO business (Id, Category, Business_Name, City_Id, Billing) VALUES(4, 2, 'Beer', 4, 25);
INSERT INTO business (Id, Category, Business_Name, City_Id, Billing) VALUES(5, 1, 'Steak', 1, 80);
CREATE TABLE City (
    Id INT,
    City_Name VARCHAR(30)
);
INSERT INTO City (Id, City_Name) VALUES(1, 'Paris');
INSERT INTO City (Id, City_Name) VALUES(2, 'New York');
INSERT INTO City (Id, City_Name) VALUES(3, 'Tokio');
INSERT INTO City (Id, City_Name) VALUES(4, 'Vancouver');
INSERT INTO City (Id, City_Name) VALUES(5, 'Cairo');
CREATE TABLE Category (
    Id INT,
    Category_Name VARCHAR(30)
 );
INSERT INTO Category (Id, Category_Name) VALUES(1, 'Bar');
INSERT INTO Category (Id, Category_Name) VALUES(2, 'Pub');
INSERT INTO Category (Id, Category_Name) VALUES(3, 'Pizza');

2-我想进行这些SQL查询:

a)所有商店的计费总价值,如此表:

-----------------------
|Business_Name | Total |
|--------------+-------|
|Total         | 180   |
------------------------

b)所有按类别的总收费都像以下表:

-------------------
|Category | Total |
|---------+-------|
|Bar      | 130   |
|---------+-------|
|Pub      | 50    |
|---------+-------|
|Pizza    | 5     |
----------+--------

c)列出带有最小帐单的business_name,显示:category_name,business_name和类似此表的计费:

----------------------------------------
|Category_Name | Business_Name | Total |
|--------------+---------------+-------|
|Pub           | Beer          | 5     |
|--------------+---------------+--------

d)所有按城市计费的总计,显示:category_name,business_name,city_name和诸如此表的帐单

--------------------------
|City            | Total |
|----------------+-------|
|Cairo           | 0     |
|----------------+-------|
|New York        | 10    |
|----------------+-------|
|Paris           | 130   |
|----------------+-------|
|Tokio           | 15    |
-----------------+--------
|Vancouver       | 25    |
-----------------+--------

有更多知识可以帮助我的身体吗?=)

首先是第一件事,所有这些都是基本查询,我必须指出,简单的Google搜索教程(EX1,EX2,EX3)将回答其中的大多数。当我们在这里提供帮助和指导时,我希望您会牢记它并阅读教程。

可以说能够帮助您,我将浏览每个查询,并概述正在发生的事情。

a)您需要在此处进行汇总操作来总结这些值。您将使用总和关键词。通常,您需要一个组,但是在这种情况下,由于我们只有一个带有" Total"一词的硬编码列,因此不需要。我们还根据您的表格给每个列的别名。这是在列名之后。

 select 'Total' as business_Name, 
         sum(billing) Total 
 from business

b)这几乎是A的精确副本,但需要进行分组。在这种情况下,您必须通过关键词使用该组,以适用于所有列中的所有列。在这种情况下,它只是类别名称。最好不要在clob和按语句中使用序列中的序列位置,您应该始终阐明在能够使用时使用的列。

select c.category_name,
       sum(billing) total
from business b
inner join category c
    on b.category = c.id
    group by c.category_name

c)我们继续在查询上构建并在选择语句中添加另一列,然后通过允许分组为组中添加一列。

select c.category_name, 
       b.business_name,
       sum(billing) total
from business b
inner join category c
    on b.category = c.id
    group by c.category_name, b.business_name

d)对于此查询,它与b非常相似,但是我们使用City ID加入了City_name。

    select c.city_name
           ,sum(billing) as total 
    from business b 
    inner join city c on c.id = b.city_id
    group by c.city_name

这么说,您的几个示例与您的预期输出不符。但是这些查询确实将预期输出与您提供的数据匹配。

我确实建议您通过一些教程更好地掌握SQL的基础知识。

这是对查询之一的答案。但是我建议您阅读在线基本SQL教程,您将能够轻松地写它们。

b)

select c.category_name
     ,sum(billing)
from business b
join category c
    on b.category = c.id
group by 1

最新更新