powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Генерация данных
5 сообщений из 5, страница 1 из 1
Генерация данных
    #40077037
Как сгенерировать 100 000 записей у поля purchase_datetime по принципу:

- 1/3 записей purchase_datetime в 2017 году (распределите записи в течение года более-менее равномерно);
- 1/3 записей purchase_datetime в 2019 году (распределите записи в течение года более-менее равномерно);
- 1/3 записей purchase_datetime в 2020 году (распределите записи в течение года более-менее равномерно);

Я сделал запрос и сгенерировал 100 000 записей, но по одному условию за 2017 год.
Как сделать по всем трём условиям?

create table if not exists sold_car_service
as select
generate_series(1,100000) as id,
md5(random()::text)::char(17) as car_vin_code,
(random() * 18 + 1)::int as car_model_id,
('2017-01-03'::date - interval '2 day' + interval '12 month' * random())::date as purchase_datetime;
SELECT 100000;

alter table sold_car_service add primary key (id);
alter table sold_car_service ADD FOREIGN KEY (car_model_id) references products(id) ON DELETE CASCADE;

select * from sold_car_service;
...
Рейтинг: 0 / 0
Генерация данных
    #40077135
gav21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Сысоев,
может CASE + деление с остатком?
как то так например
select
id,
md5(random()::text)::char(17) as car_vin_code,
(random() * 18 + 1)::int as car_model_id,
case
when id % 3 = 0 then ('2017-01-03'::date - interval '2 day' + interval '12 month' * random())::date
when id % 3 = 1 then ('2019-01-03'::date - interval '2 day' + interval '12 month' * random())::date
when id % 3 = 2 then ('2020-01-03'::date - interval '2 day' + interval '12 month' * random())::date
end as purchase_datetime
from generate_series(1,100000) as id
order by purchase_datetime;
...
Рейтинг: 0 / 0
Генерация данных
    #40077284
gav21,

Сойдет!
Спасибо, респект и уважуха!
...
Рейтинг: 0 / 0
Генерация данных
    #40077287
gav21,

Я не силен в продвинутом sql, поэтому не владею навыками генерации таких последовательностей.
Еще как можно для поля buyer_name сгенерировать Buyer1, Buyer2, Buyer3....? возможны повторения
...
Рейтинг: 0 / 0
Генерация данных
    #40077296
gav21,
сгенерировал 'Buyer' || ((random() * 21 + 22)::int) as buyer_name - конкатенация строк
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Генерация данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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