progresql数据表中有字段 rule_id,severity,result_id,severity严重级别的值有3种,分别是1,2,3,需要统计某个severity级别情况下按照rule_id分组后记录数最多的top5个 rule_id对应的数据分别是多少?使用一条sql怎么实现?
时间: 2024-04-12 13:31:13 浏览: 122
要统计某个特定severity级别下按rule_id分组后记录数最多的top5个rule_id对应的数据,可以使用以下SQL查询语句:
```sql
SELECT severity, rule_id, COUNT(*) AS record_count
FROM your_table
WHERE severity = <指定的severity级别>
GROUP BY severity, rule_id
ORDER BY record_count DESC
LIMIT 5;
```
请将上述查询语句中的 `your_table` 替换为你实际使用的数据表名称,并将 `<指定的severity级别>` 替换为你想要统计的具体severity级别。执行该查询将返回指定severity级别下按rule_id分组后记录数最多的top5个rule_id对应的数据。结果将按照record_count降序排列。
相关问题
progresql数据表中有字段 rule_id,severity,result_id,severity严重级别的值有3种,分别是1,2,3,需要统计每种severity级别情况下按照rule_id分组后记录数最多的top5个 rule_id对应的数据
要实现按severity级别统计,并在每个级别下按rule_id分组后找到记录数最多的top5个rule_id对应的数据,可以使用以下SQL查询语句:
```sql
SELECT severity, rule_id, COUNT(*) AS record_count
FROM your_table
GROUP BY severity, rule_id
HAVING COUNT(*) > 0
ORDER BY severity, record_count DESC
LIMIT 5;
```
请将上述查询语句中的 `your_table` 替换为你实际使用的数据表名称。执行该查询将返回每种severity级别情况下按rule_id分组后记录数最多的top5个rule_id对应的数据。结果将按照severity级别和record_count降序排列。
clinic_screenresult表中有三个字段,分别taskid,modulename,sendtime。 1、用taskid字段去重查询总数,标记为处方总数 2、当taskid相同且modulename都为空时,去重计算总数,标记为不适宜处方数 3、用不适宜处方数除以处方总数,标记为不适宜处方率 根据以上条件,用SQL语句表达,并能在progreSQL中执行
以下是SQL语句表达:
```
-- 计算处方总数
SELECT COUNT(DISTINCT taskid) AS "处方总数"
FROM clinic_screenresult;
-- 计算不适宜处方数
SELECT COUNT(DISTINCT taskid) AS "不适宜处方数"
FROM clinic_screenresult
WHERE modulename IS NULL;
-- 计算不适宜处方率
SELECT COUNT(DISTINCT taskid)::float / (SELECT COUNT(DISTINCT taskid) FROM clinic_screenresult) AS "不适宜处方率"
FROM clinic_screenresult
WHERE modulename IS NULL;
```
注意:上述SQL语句中的 `clinic_screenresult` 应该替换为实际的表名。
阅读全文