2017-09-08 6 views
-3

I sql ich studieren (von mir) und ich würde gerne wissen, wie ich für diese Beispiele tun würde:sql Summe Bedingungen wählen

1- i brüllen diese 3 Tabellen erstellen würde:

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- ich mag diese SQL-Abfragen machen:

a) Gesamtwert der Abrechnung (Billing) alle Geschäfte, wie diese Tabelle:

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

b) Alles Gesamt Billing von CATEGORY_NAME wie diese Tabelle:

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

c) Liste der BUSINESS_NAME mit min Abrechnung, zeigt das: CATEGORY_NAME, BUSINESS_NAME und Billing wie diese Tabelle:

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

d) Alle insgesamt Abrechnung von Stadt, zeigt das: CATEGORY_NAME, BUSINESS_NAME, city_name und Billing wie dieser Tabelle

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

Jeder Körper mit etwas mehr Wissen, der mir helfen könnte, bitte? =)

+2

Lesen Sie einfach grundlegende SQL-Tutorials online und Sie werden in der Lage sein, Abfragen selbst zu schreiben –

+0

Home-Arbeit-Fragen können gut angenommen werden, wenn Sie Ihren Versuch bei der Lösung von ihnen posten – TheGameiswar

Antwort

0

Das erste, was zuerst ist, all dies sind grundlegende Fragen und ich muss darauf hinweisen, dass eine einfache Google-Suche nach Tutorials (ex1, ex2, ex3) beantwortet haben die meisten von ihnen würden . Da wir hier sind, um Hilfe und Anleitung zu geben, hoffe ich, dass Sie sich das zu Herzen nehmen und die Tutorials lesen, bevor Sie die Antworten durchgehen.

mit dem gesagt, in der Lage sein, Ihnen zu helfen, werde ich durch jede Abfrage gehen und einen Überblick über das, was passiert.

a) Sie benötigen hier einen aggregierten Vorgang, um die Werte zusammenzufassen. Sie würden das Summenschlüsselwort verwenden. normalerweise brauchen Sie eine Gruppe, aber in diesem Fall, da wir nur eine hart codierte Spalte mit dem Wort "Total" haben, ist es nicht erforderlich. Wir geben auch jeder Spalte einen Alias ​​gemäß Ihrer Tabelle. Dies ist nach dem Spaltennamen.

b) Dieser ist fast eine exakte Kopie von a, erfordert aber eine Gruppierung. In diesem Fall müssen Sie die Gruppe nach Schlüsselwort für alle Spalten verwenden, die nicht in Aggregaten sind. In diesem Fall ist es nur der Kategoriename. Es empfiehlt sich, die ordinale Position nicht in Gruppen nach Reihenfolge zu verwenden, sondern immer die Spalten, die Sie verwenden, wenn möglich zu buchstabieren.

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) Wir werden weiterhin auf die Abfrage erstellen und eine andere Spalte in der select-Anweisung hinzufügen und dann eine Spalte zu der Gruppe hinzufügen, indem Sie Gruppierung zu ermöglichen.

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) Für diese Abfrage seines sehr ähnlich b, aber statt category_name wir mit Stadt-ID auf Stadt kommen zu tun.

Mit all dem gesagt, einige Ihrer Beispiele stimmen nicht mit Ihrer erwarteten Ausgabe überein. Diese Abfragen stimmen jedoch mit den von Ihnen angegebenen Daten mit der erwarteten Ausgabe überein.

Ich empfehle wirklich einige Tutorials durchzugehen, um die Grundlagen von SQL besser zu verstehen.

0

Hier ist die Antwort auf eine der Abfragen. Aber ich würde Ihnen empfehlen, online grundlegende SQL-Tutorials zu lesen, und Sie werden in der Lage sein, sie leicht selbst zu schreiben.

b)

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