Designação de espaço de tempo SQL
Quando o SQL faz consultas estatísticas, geralmente é necessário contar o número total de outro campo após o agrupamento. Geralmente, esse é o caso em que o resultado de COUNT (campo a ser contado) é NULL. Se você enviar diretamente o resultado NULL ao chamador, será difícil lidar com a outra parte. Portanto, precisamos julgar a saída: se estiver vazia, passe 0.
Para conseguir essa função, você pode usar a função ISNULL.
Método de chamada de função
ISNULL (o valor que precisa ser considerado vazio e o valor que se espera que seja devolvido)
Exemplo de chamada
Classe da tabela (AID, nome da classe, nome do professor da turma)
AJUDA | Nome | Diretor |
---|---|---|
1 | Grade One | …… |
2 | Grau um e grau dois | …… |
3 | Grade One Three | …… |
4 | Primeira classe do ensino médio | …… |
Aluno da tabela (AID, nome do aluno, classe)
AJUDA | Nome | ClassAID |
---|---|---|
1 | Zhang San | 1 |
2 | Li Si | 1 |
3 | Wang Wu | 1 |
4 | Zhang San | 2 |
5 | Li Si | 2 |
6 | Wang Wu | 2 |
7 | Zhao Liu | 2 |
Obviamente, o campo ClassAID da tabela Student é referenciado no campo AID da tabela Class para indicar a qual classe esse aluno pertence.
--这是一个统计查询:查询各个班都分别有多少学生
SELECT
[ClassAID] = C.AID
,[StudentNumber] = COUNT(S.AID)
FROM Class AS C
JOIN Student AS S ON S.ClassAID = C.AID
GROUP BY C.AID
--上面这个查询会出现一个问题,倘若有一个班级没有任何学生,那么那个班级的‘学生数’就会被统计为NULL
O resultado será assim:
ClassAID | Número de estudante |
---|---|
1 | 3 |
2 | 4 |
3 | NULO |
4 | NULO |
Espero exibir 0 em vez de NULL quando o resultado estiver vazio.O
código é o seguinte:
--这是一个统计查询:查询各个班都分别有多少学生
SELECT
[ClassAID] = C.AID
,[StudentNumber] = ISNULL(COUNT(S.AID),0)
FROM Class AS C
JOIN Student AS S ON S.ClassAID = C.AID
GROUP BY C.AID
Então, o resultado é este:
ClassAID | Número de estudante |
---|---|
1 | 3 |
2 | 4 |
3 | 0 0 |
4 | 0 0 |