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

Скрипт создания БД (Магазин):
Код: 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
3 запроса для студента
    #32149562
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
3 запроса для студента
    #32149568
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
3 запроса для студента
    #32149571
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
3 запроса для студента
    #32150520
Фотография Lazy_Stud
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вроде работает. Теперь будем разбираться как:)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / 3 запроса для студента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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