Advertisement
gallopelado

CreatingSQL

Apr 16th, 2021
1,083
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Create a temporary table
  2. /*
  3. create temp table tmp_registro_anestesia(
  4.     codigo_establecimiento varchar(16) NOT NULL,
  5.     codigo_asignacion varchar(10) NOT NULL,
  6.     codigo_anestesia varchar(10) NOT NULL,
  7.     orden int4 NOT NULL,
  8.     evento_esencial int2 NULL,
  9.     tiempo_actual timestamp NULL,
  10.     grupo_intra_anestesia varchar(5) NOT NULL,
  11.     codigo_intra_anestesia int8 NOT NULL,
  12.     valor text NULL,
  13.     estado varchar(1) NULL,
  14.     creacion_fecha date NULL,
  15.     creacion_hora time NULL,
  16.     creacion_usuario varchar(10) NULL,
  17.     modificacion_fecha date NULL,
  18.     modificacion_hora time NULL,
  19.     modificacion_usuario varchar(10) NULL,
  20.     total_segundos bigint
  21. )*/
  22. select * from tmp_registro_anestesia
  23. select * from hospitalario_intra_anestesia_registro
  24.  
  25. --Insert all records to fake table with conversion
  26. insert
  27.     into
  28.     tmp_registro_anestesia
  29. select
  30.     codigo_establecimiento,
  31.     codigo_asignacion,
  32.     codigo_anestesia,
  33.     orden,
  34.     evento_esencial,
  35.     tiempo_actual,
  36.     grupo_intra_anestesia,
  37.     codigo_intra_anestesia,
  38.     valor,
  39.     estado,
  40.     creacion_fecha,
  41.     creacion_hora,
  42.     creacion_usuario,
  43.     modificacion_fecha,
  44.     modificacion_hora,
  45.     modificacion_usuario,
  46.     (
  47.         (extract(hour from creacion_hora)::int * 60 * 60) + (extract(minute from creacion_hora)::int * 60) + (extract(second from creacion_hora)::int)
  48.     )maximo_segundos
  49. from
  50.     public.hospitalario_intra_anestesia_registro;
  51.  
  52. --experiments
  53. select
  54.     --distinct(tiempo_actual),
  55.     tiempo_actual,
  56.     count(grupo_intra_anestesia)cnt,
  57.     grupo_intra_anestesia,
  58.     codigo_intra_anestesia
  59. from
  60.     tmp_registro_anestesia
  61. where
  62.     codigo_establecimiento = '0003000.00010101'
  63.     and codigo_asignacion = 'I000000067'
  64.     and codigo_anestesia = 'AN00000028'
  65.     and grupo_intra_anestesia <> '3'
  66.     --and tiempo_actual = '2021-04-15 16:56:00'
  67. group by grupo_intra_anestesia, codigo_intra_anestesia, tiempo_actual
  68.  
  69. --
  70. --I like this SQL, it's rabbit sql :-D
  71.     select
  72.         tiempo_actual,
  73.         grupo_intra_anestesia,
  74.         codigo_intra_anestesia,
  75.         codigo_asignacion, codigo_anestesia,
  76.         count(*)
  77.     from
  78.         tmp_registro_anestesia
  79.     where
  80.         codigo_establecimiento = '0003000.00010101'
  81.         and codigo_asignacion = 'I000000067'
  82.         and codigo_anestesia = 'AN00000028'
  83.         and grupo_intra_anestesia <> '3'
  84.         --and tiempo_actual = '2021-04-15 16:56:00'
  85.     group by tiempo_actual, codigo_intra_anestesia, grupo_intra_anestesia, codigo_asignacion, codigo_anestesia
  86.     HAVING count(*) > 1
  87.  
  88.  
  89. --Just for validate
  90. SELECT
  91.     grupo_intra_anestesia,
  92.     codigo_intra_anestesia,
  93.     --creacion_fecha, creacion_hora,
  94.     max(total_segundos)
  95. FROM ( 
  96.     SELECT
  97.         tiempo_actual,
  98.         grupo_intra_anestesia,
  99.         codigo_intra_anestesia,
  100.         codigo_asignacion,
  101.         codigo_anestesia,
  102.         count(*)
  103.     FROM
  104.         tmp_registro_anestesia
  105.     WHERE
  106.         codigo_establecimiento = '0003000.00010101'
  107.         AND codigo_asignacion = 'I000000067'
  108.         AND codigo_anestesia = 'AN00000028'
  109.         AND grupo_intra_anestesia <> '3'
  110.    
  111.         GROUP BY tiempo_actual,
  112.         codigo_intra_anestesia,
  113.         grupo_intra_anestesia,
  114.         codigo_asignacion,
  115.         codigo_anestesia
  116.     HAVING
  117.         count(*) > 1
  118. )d LEFT JOIN tmp_registro_anestesia USING(grupo_intra_anestesia, codigo_intra_anestesia, tiempo_actual)
  119. GROUP BY grupo_intra_anestesia, codigo_intra_anestesia--, creacion_fecha, creacion_hora
  120.  
  121. --validar query por maximo cuando hay duplicados
  122. SELECT
  123.     grupo_intra_anestesia,
  124.     codigo_intra_anestesia,
  125.     tiempo_actual,
  126.     total_segundos
  127. FROM
  128.     tmp_registro_anestesia
  129. WHERE
  130.     grupo_intra_anestesia <> '3'
  131.     AND grupo_intra_anestesia = '1'
  132.     AND codigo_intra_anestesia = 11
  133.     AND codigo_establecimiento = '0003000.00010101'
  134.     and codigo_asignacion = 'I000000067'
  135.     and codigo_anestesia = 'AN00000028'
  136.    
  137. SELECT max(total_segundos) from tmp_registro_anestesia where grupo_intra_anestesia='1' AND codigo_intra_anestesia = 14
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement