У меня есть продажи в течение года, и я хочу знать, в какие дни недели они были самыми загруженными, исходя из продаж в тот день.

Я новичок в SQL, так что ..

Например, это выглядит так:

Date        Sales   CompanyID

14.10.2020  20      12
14.10.2020  10      2
15.10.2020  15      19
15.10.2020  6       4

И я хочу, чтобы это выглядело так:

Weekday   Sales

Wednesday 30
Thursday  21

Я думаю, мне нужно использовать функцию sum () для продаж и заказывать ее по будням с датой?

0
Sejachu 15 Янв 2021 в 10:52

2 ответа

Лучший ответ

Используйте TO_CHAR с соответствующей маской формата. Например (в котором образцы данных находятся в строках №1–6; необходимый вам запрос начинается со строки №7):

SQL> with test (datum, sales, companyid) as
  2    (select date '2020-10-14', 20, 12 from dual union all
  3     select date '2020-10-14', 10,  2 from dual union all
  4     select date '2020-10-15', 15, 19 from dual union all
  5     select date '2020-10-15',  6,  4 from dual
  6    )
  7  select to_char(datum, 'fmDay') day,
  8    sum(sales) sales
  9  from test
 10  group by to_char(datum, 'fmDay');

DAY            SALES
--------- ----------
Wednesday         30
Thursday          21

SQL>
1
Littlefoot 15 Янв 2021 в 07:56
 WITH CTE(DATED,SALES,COMPANYID)AS
 (
   SELECT '20201014',20,2
     UNION ALL
   SELECT '20201014',10,2
     UNION ALL
   SELECT '20201015',15,19
     UNION ALL
   SELECT '20201015',6,4
 )
 SELECT DATENAME(DW,DATED)DAY_OF_WEEK,SUM(SALES)SALES_TOTAL
 FROM CTE AS C
 GROUP BY DATENAME(DW,DATED)
-1
Sergey 15 Янв 2021 в 08:02
65732342