Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 3 запроса для студента / 5 сообщений из 5, страница 1 из 1
26.04.2003, 00:11
    #32149409
Lazy_Stud
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 запроса для студента
Господа не проходите мимо помогите студенту чем можете!!!

Скрипт создания БД (Магазин):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
CREATE TABLE CASH (
       id_cash              INTEGER NOT NULL,
       money                INTEGER NULL,
       cashname             VARCHAR2( 20 ) NULL
);

CREATE TABLE COUNTRY (
       id_country           INTEGER NOT NULL,
       countryname          VARCHAR2( 20 ) NULL
);

CREATE TABLE DAY (
       id_day               SMALLINT NOT NULL,
       dayname              CHAR( 18 ) NULL
);

CREATE TABLE FIRM (
       id_firm              INTEGER NOT NULL,
       firmname             VARCHAR2( 20 ) NULL
);

CREATE TABLE FIRM_COUNTRY (
       id_firm              INTEGER NOT NULL,
       id_country           INTEGER NOT NULL
);

CREATE TABLE GOODS (
       id_goods             INTEGER NOT NULL,
       id_goodsname         INTEGER NOT NULL,
       id_country           INTEGER NOT NULL,
       id_firm              INTEGER NOT NULL,
       price                INTEGER NULL,
       d_guarant            SMALLINT NULL,
       m_guarant            SMALLINT NULL,
       y_guarant            SMALLINT NULL
);

CREATE TABLE GOODSNAME (
       id_goodsname         INTEGER NOT NULL,
       goodsname            VARCHAR2( 50 ) NULL
);

CREATE TABLE ORDERS (
       id_order             INTEGER NOT NULL,
       id_goods             INTEGER NOT NULL,
       id_cash              INTEGER NOT NULL,
       amount               INTEGER NULL,
       datetime             DATE NULL
);

CREATE TABLE SELLER (
       id_seller            INTEGER NOT NULL,
       firstname            VARCHAR2( 20 ) NULL,
       secondname           VARCHAR2( 20 ) NULL,
       patronymic           VARCHAR2( 20 ) NULL
);

CREATE TABLE SELLER_CASH (
       id_cash              INTEGER NOT NULL,
       id_seller            INTEGER NOT NULL,
       id_day               SMALLINT NOT NULL
);

CREATE TABLE STORE (
       id_goods             INTEGER NOT NULL,
       amount               INTEGER NULL
);


Требуется написать следующие запросы (Или хоть один из них):

1)Для всех стран, которые производят более 1-го типа тов-ов, выдать max-ную стоимость какого-либо товара.

2)Напечатать кассы содержащие не менее 5-ти товаров, которые были проданы из страны 'X' за последние 3 дня.

3)Для каждой страны вывести общее кол-во товаров проданных за последние 3 дня, не менее 2-х единиц и отсортировать по названию товара.

P.S.
Написать всё надо на чистом SQL без применения всяких курсоров и т.д.
Большая просьба помочь.
...
Рейтинг: 0 / 0
27.04.2003, 09:25
    #32149562
Oracle X-pert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 запроса для студента
Hi!
Na 1::
SQL> alter table COUNTRY
2 add constraint pk_country_id primary key (ID_COUNTRY);

Table altered

Executed in 0.141 seconds

SQL> alter table COUNTRY
2 add constraint uk_country_name unique (COUNTRYNAME);

Table altered

Executed in 0.062 seconds

SQL>
SQL>
SQL> -- Create/Recreate primary, unique and foreign key constraints
SQL> alter table GOODSNAME
2 add constraint pk_goods_id primary key (ID_GOODSNAME);

Table altered

Executed in 0.047 seconds

SQL>
SQL>
SQL> -- Create/Recreate primary, unique and foreign key constraints
SQL> alter table GOODS
2 add constraint fk_goods_country foreign key (ID_COUNTRY)
3 references country (ID_COUNTRY);

Table altered

Executed in 0.047 seconds

SQL> alter table GOODS
2 add constraint fk_goods_id foreign key (ID_GOODS)
3 references goodsname (ID_GOODSNAME);

Table altered

Executed in 0.047 seconds

SQL>
SQL> -- Create/Recreate primary, unique and foreign key constraints
SQL> alter table GOODS
2 add constraint pk_goods primary key (ID_GOODS);

Table altered

Executed in 0.078 seconds

SQL> -- Create/Recreate indexes
SQL> create index goods$goodsname on GOODS (ID_GOODSNAME);

Index created

Executed in 0.031 seconds

SQL> create index goods$firm on GOODS (ID_FIRM);

Index created

Executed in 0.046 seconds

SQL> create index goods$country on GOODS (ID_COUNTRY);

Index created

Executed in 0.093 seconds

SQL>
SQL> select countryname, goodsname, price
2 from
3 (Select a.countryname, c.goodsname, b.price,
4 MAX(b.price) OVER (Partition by b.id_country) AS max_price
5 From country a, goods b, goodsname c
6 where a.id_country = b.id_country
7 and c.id_goodsname = b.id_goodsname)
8 where price = max_price
9 /

COUNTRYNAME GOODSNAME PRICE
-------------------------------------------------- -------------------------------------------------- ---------------------------------------

Executed in 0.047 seconds
...
Рейтинг: 0 / 0
27.04.2003, 10:37
    #32149568
Oracle X-pert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 запроса для студента
Na 2::
Select a.cashname, d.countryname, COUNT(c.id_goods) counter
From CASH a, Orders b, Goods c, Country D
Where a.id_cash = b.id_cash
and d.id_country = c.id_country
and trunc(datetime) >= Trunc( sysdate - 3)
Group by a.cashname, d.countryname
Having COUNT(c.id_goods) >= 5
...
Рейтинг: 0 / 0
27.04.2003, 10:52
    #32149571
Oracle X-pert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 запроса для студента
Na 3::
SELECT DECODE(GROUPING(a.countryname), 1, 'All Countries', a.countryname)
AS Country,
DECODE(GROUPING(b.cashname), 1, 'All Cash', b.cashname)
AS Cash,
DECODE(GROUPING(e.id_goodsname), 1, 'All Goodsname', e.id_goodsname)
AS goods_name,
TO_CHAR(SUM(c.amount), '9,999,999,999') SALES$
FROM Country A, Cash B, Orders C, Goods D, Goodsname E
WHERE
a.id_country = d.id_country
and
b.id_cash = c.id_cash
and
e.id_goodsname = d.id_goodsname
and
c.id_goods = d.id_goods
and trunc(c.datetime) > trunc(sysdate - 3)
GROUP BY CUBE(a.countryname,b.cashname, e.id_goodsname)
Having (Count(e.id_goodsname) > 2);

==========
Kagetsya, tak.... Narod proverit
...
Рейтинг: 0 / 0
28.04.2003, 22:54
    #32150520
Lazy_Stud
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
3 запроса для студента
Спасибо, вроде работает. Теперь будем разбираться как:)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 3 запроса для студента / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]