Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Count, avg / 8 сообщений из 8, страница 1 из 1
27.04.2021, 10:10
    #40066227
Bernard2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Добрый день,
Есть две таблицы: projects (id, name) и details(project_id, project_days), необходимо найти по каждому name среднее количество дней и общее количество проектов вообще.

Я думаю что это довольно легко, но я полный новичок :)
...
Рейтинг: 0 / 0
27.04.2021, 10:22
    #40066230
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Bernard2021,

начните с Joins
...
Рейтинг: 0 / 0
27.04.2021, 10:28
    #40066235
Bernard2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
123йй,

объединяя таблицы, среднее работает а count выдает неправильно
...
Рейтинг: 0 / 0
27.04.2021, 11:44
    #40066267
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Bernard2021
123йй,

объединяя таблицы, среднее работает а count выдает неправильно


Не верю :)

памятка:
HOWTO :: Как правильно задавать вопросы
Как мне оформить свое сообщение?
Студентам, желающим помощи

1) Полная постановка задачи (без сокращений)
2) Подготовьте тестовые данные, лучше в виде with
например (не ваш случай):

Код: plsql
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.
-- table 1 with column list
with user_tab(user_id,user_name,registry_date) as (
select 1,'Bob',to_date('11.02.1921 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual union all
select 2,'Max',to_date('11.02.1922 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual union all
select 3,'Jon',to_date('11.02.1923 23:04:44','DD.MM.YYYY HH24:MI:SS') from dual
)
-- table 2 with column list
,user_post(post_id,user_id,parent_post_id,post_date,message) as (
select 100,1,null,to_date('11.02.1923 23:04:00','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 101,2,100,to_date('11.02.1923 23:05:23','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 102,3,100,to_date('11.02.1923 23:05:35','DD.MM.YYYY HH24:MI:SS'),'Hi' from dual union all
select 103,1,102,to_date('11.02.1923 23:06:00','DD.MM.YYYY HH24:MI:SS'),'How are you' from dual union all
select 104,2,102,to_date('11.02.1923 23:07:05','DD.MM.YYYY HH24:MI:SS'),'All right!' from dual union all
select 105,1,101,to_date('11.02.1923 23:06:21','DD.MM.YYYY HH24:MI:SS'),'Bye' from dual union all
select 106,1,104,to_date('11.02.1923 23:04:37','DD.MM.YYYY HH24:MI:SS'),'Bye' from dual union all
select 107,2,null,to_date('11.02.1923 23:08:56','DD.MM.YYYY HH24:MI:SS'),'Hmm' from dual
)
-- query sample
select
-- level
-- ,u.user_name
-- ,p.message
rpad(to_char(p.post_date,'YYYY-MM-DD HH24:MI:SS  '),20+level*2,' ')||u.user_name||': '||p.message as txt
from 
 user_post p
 join user_tab  u on ( p.user_id = u.user_id)
where p.post_date >= u.registry_date
start with p.parent_post_id is null 
connect by prior p.post_id=p.parent_post_id 
;



3) Покажите что сделали, что получили, без сокращений. ( лучше не в виде screenshot)

4) используйте Тэги, читать код без них неудобно, правильно оформляйте сообщение
...
Рейтинг: 0 / 0
27.04.2021, 11:51
    #40066270
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Bernard2021
123йй,

объединяя таблицы, среднее работает а count выдает неправильно


как должен выглядеть результат?

.....
stax
...
Рейтинг: 0 / 0
27.04.2021, 13:07
    #40066300
Bernard2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Stax,

projects
id name
1 A
2 B
3 A
4 A
5 C
6 C

details
project_id project_days
1 10
1 40
5 80
5 20

итоговая таблица должна быть
name AVG COUNT
A 30 3
B - 1
C 50 2
...
Рейтинг: 0 / 0
27.04.2021, 13:40
    #40066321
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Bernard2021,

Код: plsql
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.
SQL> ed
Wrote file afiedt.buf

  1  with projects(id, name) as (
  2    select 1,'A' from dual union all
  3    select 2, 'B' from dual union all
  4    select 3, 'A' from dual union all
  5    select 4, 'A' from dual union all
  6    select 5, 'C' from dual union all
  7    select 6, 'C' from dual)
  8  ,details(project_id,project_days) as (
  9    select 1, 10  from dual union all
 10    select 1, 40 from dual union all
 11    select 5, 80 from dual union all
 12    select 5, 20 from dual)
 13  select
 14    name
 15   ,avg(project_days) avg_d
 16   ,count(distinct id) cc
 17  from projects p ,details d
 18  where p.id=d.project_id(+)
 19  group by name
 20* order by 1
SQL> /

N      AVG_D         CC
- ---------- ----------
A         25          3
B                     1
C         50          2

SQL>
SQL> /

N      AVG_D         CC
- ---------- ----------
A         25          3
B                     1
C         50          2



.....
stax
...
Рейтинг: 0 / 0
27.04.2021, 14:04
    #40066338
Bernard2021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Count, avg
Stax,
Спасибо 🙏
Теперь знаю что такое distinct
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Count, avg / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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