繁体   English   中英

SQL查询-帮助获取组中记录的总和

[英]SQL Query - Help Getting sum of records in a Group

我有下表。

Program Table - 
        prog_ID, 
        prog_Name

Unit Table - 
        unit_ID, 
        unit_name, 
        prog_ID
        max-beds
        max-budgeted-beds
        max-unbudgeted-beds
        max-escalation-beds

Import_Data Table - 
        bed_ID, 
        unit_ID

Bed Table - 
        bed_ID, 
        bed_type_ID

Bed Type Table - 
        bed_type_ID, 
        bed_type

我正在尝试编写一个查询,该查询将为我提供每个程序中的床总数。

Program | Bed Count
-------------------
MED        30
REH        25
SUR        36

我有一个查询,可为我提供每个单元的所有床铺,但我想将其深入到程序中。 由于某种原因,我只是对此空白。

在此先感谢您的协助!


附录

我试图确定以下内容作为我的输出中的列标题:

Occupied Beds 
--Total Occupied Beds
(SUM(CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) As 'Total Occupied' 

Budgeted Beds
--OCCUPIED BUDGETED BEDS
(SUM WHEN < MAX_BUDGETED),(CASE WHEN (SUM (CASE WHEN Bed_Type.bed_type_description =     'Regular' THEN 1 ELSE 0 END)) < UNIT.unit_beds_max_budgeted THEN (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) ELSE Unit.unit_beds_max_budgeted END) AS 'Occupied Budgeted Beds'

Unbudgeted Beds
--OCCUPIED UNBUDGETED BEDS
    , (CASE WHEN (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) > UNIT.unit_beds_max_budgeted THEN Unit.unit_beds_max_unbudgeted + Unit.unit_beds_max_budgeted - (SUM (CASE WHEN Bed_Type.bed_type_description = 'Regular' THEN 1 ELSE 0 END)) ELSE 0 END) AS 'Occupied Unbudgeted Beds'

我在这里围绕对“ Unit.unit_beds_max_budgeted”的引用出现错误,我不确定为什么。 我在另一个有效的查询中使用了此逻辑,但是输出给了我每个这样的单位:

Program  Unit  Occupied_Beds   Budgeted_Beds   Unbudgeted_Beds
---------------------------------------------------------------
MED      A2    44              42              2
MED      A3    34              32              2
CCC      B2    44              42              2
CCC      B3    34              32              2

但是,我要输出的是将MED和CCC作为具有值汇总的一行(并排除单元名称)。

非常感谢任何帮助,为此我不禁感到震惊,我觉得这真的很容易,但我不明白。 我是否缺少创建链接的必填字段? 提前致谢。

一系列的连接将使您到达那里。 您不需要一直加入Bed,因为Import_Data上面带有bed_id,除非您需要其他信息。

SELECT P.prog_Name AS 'Program', COUNT(I.bed_ID) AS BedCount
FROM Import_Data I
INNER JOIN Unit U
    ON I.unit_ID = U.unit_ID
INNER JOIN Program P
    ON U.prog_ID = P.prog_ID
GROUP BY P.prog_Name

如果要按床型计算

SELECT BT.bed_type AS 'BedType', COUNT(I.bed_ID) AS BedCount
FROM Import_Data I
INNER JOIN Unit U
    ON I.unit_ID = U.unit_ID
INNER JOIN Program P
    ON U.prog_ID = P.prog_ID
INNER JOIN Bed B
    ON I.bed_ID = B.bed_ID
INNER JOIN Bed_Type BT
    ON B.bed_type_ID = BT.bed_type_ID 
GROUP BY BT.bed_type
select p.prog_ID as Program, Count(*) as BedCount
from Program p
    inner join unit u on p.prog_ID = u.prog_ID
    inner join Import_Data d on u.unit_ID = d.unit_ID
    inner join Bed b on d.bed_ID = b.bed_ID
Group By p.prog_ID

不运行此测试,您可能需要将count(*)更改为count(b.bed_ID)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM