Разное

Select from select postgres: How to do a Postgresql subquery in select clause with join in from clause like SQL Server?

Подзапрос в операторе выбора POSTGRESQL

Задавать вопрос

спросил

Изменено 1 год, 2 месяца назад

Просмотрено 344 раза

У меня есть две разные таблицы (медицинские данные и данные о приеме), обе из которых содержат дату оплаты и чистый платеж. Я хочу создать сводку отчета по годам и месяцам общей суммы медицинских чистых платежей и чистых платежей Rx. Когда я запускаю приведенный ниже SQL, POSTGRESQL говорит « подзапрос использует несгруппированный столбец «a.date_paid» из внешнего запроса »

Я думал сгруппировать по первой таблице и подзапросить общий чистый платеж из второй таблицы. POSTGRESQL

 select cast(EXTRACT(YEAR FROM a. date_paid ) как текст) || to_char(a.date_paid,'mm') как date_paid,
cast (сумма(a.net_payment) как деньги) как Medical,a.member_ssn,
(Выберите сумму (b.netpayment) из elan.rx_claims b, где приведено (ИЗВЛЕЧЕНИЕ (ГОД ОТ a.date_paid) в виде текста) ||
to_char(a.date_paid,'mm')=cast(EXTRACT(YEAR FROM b.date_paid) как текст) || to_char(b.date_paid,'мм')
и a.member_ssn=b.member_ssn ) как RxPaid
от elan.staging_claims
сгруппировать по составу (ВЫСТРОЙКА (ГОД ОТ a.date_paid) как текст) || to_char(a.date_paid,'мм'),a.member_ssn
 
  • postgresql
  • подзапрос

1

Я смог решить эту проблему самостоятельно…

 выберите a.date_paid,a.member_ssn,memfirstname,memlastname ,cast (sum(a.net_payment) as money) ,
(Выберите сумму (b.netpayment) из elan.rx_claims b
 где приведено (ИЗВЛЕЧЕНИЕ (ГОД ИЗ a.date_paid) как текст) || to_char(a.date_paid,'mm')=cast(EXTRACT(YEAR FROM b.date_paid)как текст) || to_char(b.
date_paid,'мм') и a.member_ssn=b.member_ssn) из elan.staging_claims a, elan.elig c где a.member_ssn=c.employeessn группировать по a.date_paid,a.member_ssn,memfirstname,memlastname имея сумму (a.net_payment) > 79999 заказ по 2 уб.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

sql — как выбрать в select postgresql

спросил

Изменено 1 год, 8 месяцев назад

Просмотрено 394 раза

У меня есть столбец с именем jenis_kelamin. Я хочу отобразить пол мужчины и женщины в запросе на выборку. У меня есть подобный запрос, но полученные данные по-прежнему неверны, как правильно?

 ВЫБРАТЬ различные mj.id, mj.nama_pd,
(выберите отдельный счет (jenis_layanan) из public.isian_kuis
 где jenis_kelamin = «Лаки») как jumlah_laki,
 (выберите отдельный счет (jenis_layanan)
 от public.isian_kuis
 где jenis_kelamin = 'Perempuan' ) как jumlah_perempuan
 ОТ public.master_jabatan mj
 присоединиться к isian_kuis ik на ik.jabatan_id = mj.id
  группа по mj.id,mj.nama_pd
   заказать по mj.id;
 

У меня есть пример изображения моего запроса, это все еще неправильно

Правильные данные в том, что в ID 30 у него двое мужчин и одна женщина, в ID 29 только одна женщина

  • sql
  • postgresql

5

Нет необходимости использовать вложенный выбор, просто используйте Группировать по , например:

 ВЫБРАТЬ отдельный mj. id,
  mj.nama_pd,
  СУММА(СЛУЧАЙ, КОГДА jenis_kelamin = 'Laki' THEN 1 ELSE 0 конец) КАК jumlah_laki,
  СУММА (СЛУЧАЙ, КОГДА jenis_kelamin = 'Perempuan' THEN 1 ELSE 0 конец) AS jumlah_perempuan
ОТ public.master_jabatan mj
присоединиться к isian_kuis ik на ik.jabatan_id = mj.id
группа по mj.id,mj.nama_pd
заказать по mj.id;
 

0

В Postgres вы можете использовать условную агрегацию, которая выглядит так:

 SELECT mj.id, mj.nama_pd,
       СЧЁТ(*) ФИЛЬТР (ГДЕ jenis_kelamin = 'Лаки') КАК jumlah_laki,
       COUNT(*) FILTER (ГДЕ jenis_kelamin = 'Perempuan') AS jumlah_perempuan
ОТ public.master_jabatan mj ПРИСОЕДИНЯЙТЕСЬ
     isian_kuis ик
     ПО ik.jabatan_id = mj.id
СГРУППИРОВАТЬ ПО mj.id, mj.nama_pd
ЗАКАЗАТЬ ПО mj.id;
 

Обратите внимание, что 9 используется очень, очень редко.0080 ВЫБЕРИТЕ ОТЛИЧНЫЕ с СГРУППИРОВАТЬ ПО . Это может замедлить выполнение запроса. И FILTER — это стандартный SQL, поэтому это хороший способ реализовать это.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *