2

テーブル

Patient (patient_id, patient_name, gender, staff_no, ward_no)

Ward (ward_no, ward_name, number_of_beds)

クエリ

少なくとも 1 人の患者がいる病棟ごとに、病棟番号と病棟名、病棟の患者数、空きベッド数を記入してください。あなたの答えは、空いているベッドの多い順に表示されます。

次の SQL コードを書きましたが、サーバーからエラーが返されました。

集計関数の無効な使用

SELECT
    ward.ward_no,
    ward.ward_name,
    COUNT(*) AS patient_count, 
    number_of_beds - COUNT(patient_id) AS empty_beds
FROM
    patient,
    ward
WHERE
    patient.ward_no = ward.ward_no
GROUP BY
    ward.ward_no,
    ward.ward_name,
    number_of_beds,
    empty_beds
HAVING
    COUNT(*) > 1
ORDER BY
    ward.ward_name

誰でも助けることができますか?空のベッドの数を計算し、列として返す必要があります。

前もって感謝します

4

2 に答える 2

1

SELECT ステートメントで返さない限り、グループ化できませんempty_beds(SQL Server を使用)

SELECT ward.ward_no, ward.ward_name, COUNT(*) AS patient_count, 
number_of_beds - COUNT(patient_id) AS empty_beds
FROM patient, ward
WHERE patient.ward_no = ward.ward_no
GROUP BY ward.ward_no, ward.ward_name, number_of_beds HAVING COUNT(*) > 1
ORDER BY ward.ward_name
于 2013-04-30T16:23:25.077 に答える
0
SELECT  w.ward_no, ward_name, patient_count, number_of_beds - patient_count AS empty_beds
FROM    (
        SELECT  ward_no, COUNT(*) AS patient_count
        FROM    patient
        GROUP BY
                ward_no
        ) p
JOIN    ward w
ON      w.ward_no = p.ward_no
ORDER BY
        empty_beds DESC
于 2013-04-30T16:26:03.743 に答える