Vertica SQL для данных, упорядоченный по дням, неделям, месяцам и годам в виде столбцов

Использовать subprocess.Popen:

import subprocess
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)

Обратите внимание, что связывают блоки до тех пор, пока процесс не завершится. Вы можете использовать process.stdout.readline (), если вам нужен выход до его завершения. Для получения дополнительной информации см. Документацию .

0
задан Sholk 18 January 2019 в 05:29
поделиться

1 ответ

Шолк - в следующий раз покажите ваши данные в виде текста, а не в виде картинки, чтобы мы могли скопировать и вставить их в наши примеры. Таким образом, я потерял 15 минут, чтобы собрать данные примера ...

Ты имеешь в виду это?

- Мне удалось многое упростить, если подумать об этом ...

-- your input data
WITH cdt(uid,country,msdn,mssi,call_dur,sdata,cost,date_key,date_val) AS (
            SELECT 50,'IND',9861388009,9761588009,466,477,48900,3290,DATE '2019-01-04'
  UNION ALL SELECT 51,'IND',9861388009,9761588009,466,477,48900,3290,DATE '2019-01-04'
  UNION ALL SELECT 52,'IND',9861388009,9761588009,466,477,48900,3290,DATE '2019-01-04'
  UNION ALL SELECT 53,'IND',9861388009,9761588009,466,477,48900,3290,DATE '2019-01-04'
  UNION ALL SELECT 45,'IND',9861388009,9761588009,466,477,48900,3291,DATE '2019-01-05'
  UNION ALL SELECT 46,'IND',9861388009,9761588009,466,477,48900,3291,DATE '2019-01-05'
  UNION ALL SELECT 47,'IND',9861388009,9761588009,466,477,48900,3291,DATE '2019-01-05'
  UNION ALL SELECT 48,'IND',9861388009,9761588009,466,477,48900,3291,DATE '2019-01-05'
  UNION ALL SELECT 41,'IND',9861388009,9761588009,466,477,48900,3292,DATE '2019-01-06'
  UNION ALL SELECT 42,'IND',9861388009,9761588009,466,477,48900,3292,DATE '2019-01-06'
  UNION ALL SELECT 43,'IND',9861388009,9761588009,466,477,48900,3292,DATE '2019-01-06'
  UNION ALL SELECT 44,'IND',9861388009,9761588009,466,477,48900,3292,DATE '2019-01-06'
  UNION ALL SELECT 37,'IND',9861388009,9761588009,466,477,48900,3293,DATE '2019-01-07'
  UNION ALL SELECT 38,'IND',9861388009,9761588009,466,477,48900,3293,DATE '2019-01-07'
  UNION ALL SELECT 39,'IND',9861388009,9761588009,466,477,48900,3293,DATE '2019-01-07'
  UNION ALL SELECT 40,'IND',9861388009,9761588009,466,477,48900,3293,DATE '2019-01-07'
  UNION ALL SELECT 33,'IND',9861388009,9761588009,466,477,48900,3294,DATE '2019-01-08'
  UNION ALL SELECT 34,'IND',9861388009,9761588009,466,477,48900,3294,DATE '2019-01-08'
  UNION ALL SELECT 35,'IND',9861388009,9761588009,466,477,48900,3294,DATE '2019-01-08'
  UNION ALL SELECT 36,'IND',9861388009,9761588009,466,477,48900,3294,DATE '2019-01-08'
  UNION ALL SELECT 29,'IND',9861388009,9761588009,466,477,48900,3295,DATE '2019-01-09'
)
-- real query starts here ...
SELECT
  date_val
, COUNT(*) OVER(PARTITION BY DAY  (date_val)) AS per_day
, COUNT(*) OVER(PARTITION BY WEEK (date_val)) AS per_week
, COUNT(*) OVER(PARTITION BY MONTH(date_val)) AS per_month
, COUNT(*) OVER(PARTITION BY YEAR (date_val)) AS per_year
FROM cdt
;

   date_val  | per_day | per_week | per_month | per_year 
 ------------+---------+----------+-----------+----------
  2019-01-05 |       4 |        8 |        21 |       21
  2019-01-05 |       4 |        8 |        21 |       21
  2019-01-05 |       4 |        8 |        21 |       21
  2019-01-05 |       4 |        8 |        21 |       21
  2019-01-04 |       4 |        8 |        21 |       21
  2019-01-04 |       4 |        8 |        21 |       21
  2019-01-04 |       4 |        8 |        21 |       21
  2019-01-04 |       4 |        8 |        21 |       21
  2019-01-09 |       1 |       13 |        21 |       21
  2019-01-08 |       4 |       13 |        21 |       21
  2019-01-08 |       4 |       13 |        21 |       21
  2019-01-08 |       4 |       13 |        21 |       21
  2019-01-08 |       4 |       13 |        21 |       21
  2019-01-07 |       4 |       13 |        21 |       21
  2019-01-07 |       4 |       13 |        21 |       21
  2019-01-07 |       4 |       13 |        21 |       21
  2019-01-07 |       4 |       13 |        21 |       21
  2019-01-06 |       4 |       13 |        21 |       21
  2019-01-06 |       4 |       13 |        21 |       21
  2019-01-06 |       4 |       13 |        21 |       21
  2019-01-06 |       4 |       13 |        21 |       21
 (21 rows)
0
ответ дан marcothesane 18 January 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: