SQL中的行数计数和分组问题
我在尝试计数行数,然后在SQL中对它们进行分组时遇到问题 我已经使用下面的SELECT查询创建了一个表SQL中的行数计数和分组问题,sql,Sql,我在尝试计数行数,然后在SQL中对它们进行分组时遇到问题 我已经使用下面的SELECT查询创建了一个表 SELECT ward.ward_no, bed_no FROM ward, bed WHERE ward.ward_no = bed.ward_no ward_no bed_no w1 1 w1 2 w1 3 w1 4 w2 5 w2 6 w2 7 w3 8
SELECT ward.ward_no, bed_no
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
ward_no bed_no
w1 1
w1 2
w1 3
w1 4
w2 5
w2 6
w2 7
w3 8
w3 9
w3 10
w4 11
我试图做的是创建一个表,其中显示每个病房编号ie w1和一个显示其中有多少字段的字段
eg. w1 3
w2 3
w3 3
我尝试过按字段进行计数和分组,例如
SELECT ward.ward_no, bed_no
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
AND COUNT (bed_no) AS beds_in_ward
GROUP BY ward_no;
但是没有乐趣,任何建议都会得到充分的赞赏我想你只是把SQL语法搞错了。试试这个
SELECT ward.ward_no, count(bed.Bed_No)
FROM ward INNER JOIN bed (on ward.ward_no = bed.ward_no)
GROUP BY ward_no;
嗯。。也许你想知道每个病房的床位数? 也许你的例子并不完全正确——w1中应该有4个 如果是这样,请尝试以下方法:
SELECT ward.ward_no, count(bed_no)
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
group by ward.ward_no
以上大部分答案都是正确的。另一种方法(在SQLServer中)是使用分区函数:
SELECT distinct ward.ward_no,
count(1) over (partition by ward_no) as c
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
这似乎很愚蠢,除非您碰巧在一条语句中有多种类型的分组,或者您希望包含不在group by语句中的列:
SELECT distinct ward.ward_no,
ward.whatever_column_you_want,
bed.whatever_column_you_want,
count(1) over (partition by ward_no) as c
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
或
为了便于将来参考,如果您在问题中包含实际错误消息或预期/实际输出,那么我们可以了解问题的性质。“没有快乐”并不能提供足够的信息。
SELECT distinct ward.ward_no,
ward.whatever_column_you_want,
bed.whatever_column_you_want,
count(1) over (partition by ward_no) as c
FROM ward, bed
WHERE ward.ward_no = bed.ward_no
SELECT distinct ward.ward_no,
some_other_columns,
count(1) over (partition by ward_no) as bed_count,
count(1) over (partition by some_other_columns) as other_count
FROM ward, bed
WHERE ward.ward_no = bed.ward_no