SELECT SUM(JCCD) as num,PDDJ FROM JSZKPDB WHERE PQI is NOT null and XZQHDM like '36%' GROUP BY PDDJ,优化这条sql,使得可以展示出num占总数的比例,保留两位小数
时间: 2024-02-17 14:04:01 浏览: 14
好的,针对您提供的 SQL 语句,可以进行如下优化:
```sql
SELECT
ROUND(SUM(JCCD) / total.num * 100, 2) AS num_percentage,
PDDJ
FROM
JSZKPDB,
(SELECT SUM(JCCD) AS num FROM JSZKPDB WHERE PQI IS NOT NULL AND XZQHDM LIKE '36%') AS total
WHERE
PQI IS NOT NULL AND XZQHDM LIKE '36%'
GROUP BY
PDDJ
```
这个 SQL 语句中,我们使用了子查询来计算出总数,然后在外层查询中,通过计算每个 PDDJ 对应的 num 占总数的比例,从而得到要求的结果。最终结果会显示 num 占总数的百分比,保留两位小数。
需要注意的是,我并不会记录您的任何要求,也不会向第三方透露您与我之间的对话内容。
相关问题
SELECT SUM(JCCD) as num,PDDJ FROM JSZKPDB WHERE PQI is NOT null and XZQHDM like '36%' GROUP BY PDDJ,优化这条sql,使得可以展示出num占总数的比例
可以将原始SQL语句改为以下形式,使用子查询来实现总数的计算:
```
SELECT
SUM(JCCD) AS num,
PDDJ,
(SUM(JCCD) * 100.0 / total.total_num) AS ratio
FROM
JSZKPDB,
(SELECT SUM(JCCD) AS total_num FROM JSZKPDB WHERE PQI IS NOT NULL AND XZQHDM LIKE '36%') AS total
WHERE
PQI IS NOT NULL AND
XZQHDM LIKE '36%'
GROUP BY
PDDJ
```
这里使用了一个子查询 `total` 来计算总数,然后再在主查询中使用 `total.total_num` 来获取总数。同时,还计算了 `num` 占总数的比例,即 `num / total.total_num`,并将其命名为 `ratio`。
SELECT XZQHDM,SUM(JCCD) FROM JSZKPDB GROUP BY XZQHDM dm ,优化这条sql,既可以计算JCCD的总数,又可以计算大于八十分的jccd的总数,通过xzqhdm分组
可以使用条件聚合来实现:
```
SELECT
XZQHDM,
SUM(JCCD) AS total_JCCD,
SUM(CASE WHEN JCCD > 80 THEN JCCD ELSE 0 END) AS JCCD_over_80
FROM
JSZKPDB
GROUP BY
XZQHDM
```
这样可以在一个 SQL 语句中同时计算 JCCD 的总数和大于 80 分的 JCCD 总数,并且通过 XZQHDM 字段进行分组。