【发布时间】:2022-01-26 17:23:14
【问题描述】:
我有这张表(table_2),它基本上提供了患者信息和他们在特定日期访问的科室 -
| Patient_ID | department | service_dte | birth_dte | count |
|---|---|---|---|---|
| 12345 | cardiac | 1/2/21 | 6/18/78 | 5 |
| 12345 | cardiac | 8/20/21 | 6/18/78 | 5 |
| 12345 | cardiac | 10/28/21 | 6/18/78 | 5 |
| 12345 | ortho | 1/14/21 | 6/18/78 | 2 |
| 12345 | ortho | 7/7/21 | 6/18/78 | 2 |
| 12345 | cardiac | 8/20/21 | 6/18/78 | 5 |
| 12345 | cardiac | 4/19/21 | 6/18/78 | 5 |
| 12345 | obgyn | 4/1/21 | 6/18/78 | 1 |
| 78645 | neuro | 5/1/21 | 7/18/87 | 2 |
| 78645 | neuro | 7/7/21 | 7/18/87 | 2 |
| 78645 | ent | 7/7/21 | 7/18/87 | 1 |
| 32423 | gastro | 11/7/21 | 3/12/57 | 1 |
我希望我想要的输出生成一个额外的列(最大值),为每个“Patient_ID”提供最高重复的“部门”,同时保持所有列不变,类似于下表 -
| Patient_ID | department | service_dte | birth_dte | count | max |
|---|---|---|---|---|---|
| 12345 | cardiac | 1/2/21 | 6/18/78 | 5 | cardiac |
| 12345 | cardiac | 8/20/21 | 6/18/78 | 5 | cardiac |
| 12345 | cardiac | 10/28/21 | 6/18/78 | 5 | cardiac |
| 12345 | ortho | 1/14/21 | 6/18/78 | 2 | cardiac |
| 12345 | ortho | 7/7/21 | 6/18/78 | 2 | cardiac |
| 12345 | cardiac | 8/20/21 | 6/18/78 | 5 | cardiac |
| 12345 | cardiac | 4/19/21 | 6/18/78 | 5 | cardiac |
| 12345 | obgyn | 4/1/21 | 6/18/78 | 1 | cardiac |
| 78645 | neuro | 5/1/21 | 7/18/87 | 2 | neuro |
| 78645 | neuro | 7/7/21 | 7/18/87 | 2 | neuro |
| 78645 | ent | 7/7/21 | 7/18/87 | 1 | neuro |
| 32423 | gastro | 11/7/21 | 3/12/57 | 1 | gastro |
我试过下面的代码;这为我提供了上表中患者就诊的科室数量 -
select *
, count(department) OVER (PARTITION BY patient_id, department) AS count
FROM table_1
但是,对于患者 12345 的最大列,它没有给我想要的值,它应该是心脏的。我不是心脏,而是正畸。请协助。这是我正在尝试的代码 -
select *
, max(department) OVER (PARTITION BY patient_id) AS max
FROM table_2
请帮助我以最佳方式获得最大列,并就我做错或可能做错的地方提出建议。
谢谢。
【问题讨论】:
-
如果存在多个最大值怎么办,例如第二个
ent给患者78645?
标签: mysql sql hadoop hive teradata