Files
dolthub--doltgresql/testing/dumps/sql/Dmitrytsg_onectest.sql
T
2026-07-13 12:32:25 +08:00

384 lines
9.6 KiB
PL/PgSQL

-- Downloaded from: https://github.com/Dmitrytsg/onectest/blob/427db1e8ecee644c8f52ea16e7b9c608f6d3c375/onecPsqlDB.sql
--
-- PostgreSQL database dump
--
-- Dumped from database version 15.7 (Homebrew)
-- Dumped by pg_dump version 15.7 (Homebrew)
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: update_statistics(); Type: FUNCTION; Schema: public; Owner: dmitry
--
CREATE FUNCTION public.update_statistics() RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
order_date DATE;
product_category INT;
BEGIN
-- Извлекаем дату заказа и категорию товара
order_date := DATE(NEW.order_time);
SELECT category_id INTO product_category FROM products WHERE product_id = NEW.product_id;
-- Проверяем, существует ли запись в статистике за данный день и категорию
IF EXISTS (
SELECT 1 FROM statistics
WHERE date = order_date
AND category_id = product_category
) THEN
-- Если запись существует, обновляем количество товаров
UPDATE statistics
SET product_count = product_count + NEW.number
WHERE date = order_date
AND category_id = product_category;
ELSE
-- Если запись не существует, создаем новую
INSERT INTO statistics (date, category_id, product_count)
VALUES (order_date, product_category, NEW.number);
END IF;
RETURN NEW;
END;
$$;
ALTER FUNCTION public.update_statistics() OWNER TO dmitry;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- Name: categories; Type: TABLE; Schema: public; Owner: dmitry
--
CREATE TABLE public.categories (
category_id integer NOT NULL,
category_name character varying(50) NOT NULL
);
ALTER TABLE public.categories OWNER TO dmitry;
--
-- Name: categories_category_id_seq; Type: SEQUENCE; Schema: public; Owner: dmitry
--
CREATE SEQUENCE public.categories_category_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.categories_category_id_seq OWNER TO dmitry;
--
-- Name: categories_category_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dmitry
--
ALTER SEQUENCE public.categories_category_id_seq OWNED BY public.categories.category_id;
--
-- Name: orders; Type: TABLE; Schema: public; Owner: dmitry
--
CREATE TABLE public.orders (
order_id integer NOT NULL,
order_time timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
product_id integer NOT NULL,
number integer NOT NULL
);
ALTER TABLE public.orders OWNER TO dmitry;
--
-- Name: orders_order_id_seq; Type: SEQUENCE; Schema: public; Owner: dmitry
--
CREATE SEQUENCE public.orders_order_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.orders_order_id_seq OWNER TO dmitry;
--
-- Name: orders_order_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dmitry
--
ALTER SEQUENCE public.orders_order_id_seq OWNED BY public.orders.order_id;
--
-- Name: products; Type: TABLE; Schema: public; Owner: dmitry
--
CREATE TABLE public.products (
product_id integer NOT NULL,
product_name character varying(100) NOT NULL,
category_id integer NOT NULL,
price numeric(10,2) NOT NULL,
description text
);
ALTER TABLE public.products OWNER TO dmitry;
--
-- Name: products_product_id_seq; Type: SEQUENCE; Schema: public; Owner: dmitry
--
CREATE SEQUENCE public.products_product_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.products_product_id_seq OWNER TO dmitry;
--
-- Name: products_product_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dmitry
--
ALTER SEQUENCE public.products_product_id_seq OWNED BY public.products.product_id;
--
-- Name: statistics; Type: TABLE; Schema: public; Owner: dmitry
--
CREATE TABLE public.statistics (
stat_id integer NOT NULL,
date date NOT NULL,
category_id integer NOT NULL,
product_count integer NOT NULL
);
ALTER TABLE public.statistics OWNER TO dmitry;
--
-- Name: statistics_stat_id_seq; Type: SEQUENCE; Schema: public; Owner: dmitry
--
CREATE SEQUENCE public.statistics_stat_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.statistics_stat_id_seq OWNER TO dmitry;
--
-- Name: statistics_stat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dmitry
--
ALTER SEQUENCE public.statistics_stat_id_seq OWNED BY public.statistics.stat_id;
--
-- Name: categories category_id; Type: DEFAULT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.categories ALTER COLUMN category_id SET DEFAULT nextval('public.categories_category_id_seq'::regclass);
--
-- Name: orders order_id; Type: DEFAULT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.orders ALTER COLUMN order_id SET DEFAULT nextval('public.orders_order_id_seq'::regclass);
--
-- Name: products product_id; Type: DEFAULT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.products ALTER COLUMN product_id SET DEFAULT nextval('public.products_product_id_seq'::regclass);
--
-- Name: statistics stat_id; Type: DEFAULT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.statistics ALTER COLUMN stat_id SET DEFAULT nextval('public.statistics_stat_id_seq'::regclass);
--
-- Data for Name: categories; Type: TABLE DATA; Schema: public; Owner: dmitry
--
COPY public.categories (category_id, category_name) FROM stdin;
1 Electronics
2 Books
3 Clothing
\.
--
-- Data for Name: orders; Type: TABLE DATA; Schema: public; Owner: dmitry
--
COPY public.orders (order_id, order_time, product_id, number) FROM stdin;
1 2024-06-20 15:53:18.844677 15 3
2 2024-06-20 15:54:59.915415 14 7
3 2024-06-20 15:54:59.915415 18 4
4 2024-06-20 15:54:59.915415 22 10
5 2024-06-20 15:54:59.915415 21 6
\.
--
-- Data for Name: products; Type: TABLE DATA; Schema: public; Owner: dmitry
--
COPY public.products (product_id, product_name, category_id, price, description) FROM stdin;
13 Smartphone 1 599.99 Latest model with advanced features
14 Laptop 1 999.99 High performance laptop with 16GB RAM
15 Headphones 1 199.99 Noise-cancelling over-ear headphones
16 Tablet 1 299.99 10-inch tablet with high-resolution display
17 E-reader 2 129.99 Portable e-reader with backlit display
18 Novel 2 19.99 Bestselling fiction novel
19 Cookbook 2 24.99 Collection of gourmet recipes
20 Biography 2 29.99 Biography of a famous personality
21 T-shirt 3 14.99 Cotton T-shirt with a graphic print
22 Jeans 3 49.99 Denim jeans with a slim fit
23 Jacket 3 89.99 Waterproof outdoor jacket
24 Sneakers 3 74.99 Comfortable and stylish sneakers
\.
--
-- Data for Name: statistics; Type: TABLE DATA; Schema: public; Owner: dmitry
--
COPY public.statistics (stat_id, date, category_id, product_count) FROM stdin;
1 2024-06-20 1 10
2 2024-06-20 2 4
3 2024-06-20 3 16
\.
--
-- Name: categories_category_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dmitry
--
SELECT pg_catalog.setval('public.categories_category_id_seq', 3, true);
--
-- Name: orders_order_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dmitry
--
SELECT pg_catalog.setval('public.orders_order_id_seq', 5, true);
--
-- Name: products_product_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dmitry
--
SELECT pg_catalog.setval('public.products_product_id_seq', 24, true);
--
-- Name: statistics_stat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dmitry
--
SELECT pg_catalog.setval('public.statistics_stat_id_seq', 3, true);
--
-- Name: categories categories_pkey; Type: CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.categories
ADD CONSTRAINT categories_pkey PRIMARY KEY (category_id);
--
-- Name: orders orders_pkey; Type: CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.orders
ADD CONSTRAINT orders_pkey PRIMARY KEY (order_id);
--
-- Name: products products_pkey; Type: CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.products
ADD CONSTRAINT products_pkey PRIMARY KEY (product_id);
--
-- Name: statistics statistics_pkey; Type: CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.statistics
ADD CONSTRAINT statistics_pkey PRIMARY KEY (stat_id);
--
-- Name: orders after_order_insert; Type: TRIGGER; Schema: public; Owner: dmitry
--
CREATE TRIGGER after_order_insert AFTER INSERT ON public.orders FOR EACH ROW EXECUTE FUNCTION public.update_statistics();
--
-- Name: products fk_category_id; Type: FK CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.products
ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES public.categories(category_id) ON UPDATE SET NULL ON DELETE SET NULL;
--
-- Name: statistics fk_category_id; Type: FK CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.statistics
ADD CONSTRAINT fk_category_id FOREIGN KEY (category_id) REFERENCES public.categories(category_id) ON UPDATE SET NULL ON DELETE SET NULL;
--
-- Name: orders fk_product_id; Type: FK CONSTRAINT; Schema: public; Owner: dmitry
--
ALTER TABLE ONLY public.orders
ADD CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES public.products(product_id) ON UPDATE SET NULL ON DELETE SET NULL;
--
-- PostgreSQL database dump complete
--