id teacher_id subject_id subject_parent_id title price lesson_num cover buy_count view_count version status is_deleted gmt_create gmt_modified 这是课程表的字段 id title parent_id sort gmt_create gmt_modified这是科目表的字段 科目是二级分类 查询二级课程科目的title和所占所有课程的百分比
时间: 2023-08-11 16:05:25 浏览: 36
以下是查询二级课程科目的title和所占所有课程的百分比的SQL语句:
```
SELECT s.title, CONCAT(FORMAT(COUNT(c.id) / t.total * 100, 2), '%') AS percentage
FROM edu_subject s
LEFT JOIN (
SELECT parent_id, COUNT(id) AS total
FROM edu_subject
WHERE parent_id IS NOT NULL
GROUP BY parent_id
) t ON s.id = t.parent_id
LEFT JOIN edu_course c ON s.id = c.subject_id
WHERE s.parent_id IS NOT NULL
GROUP BY s.id
ORDER BY percentage DESC;
```
其中,edu_subject表中的parent_id表示科目的上级分类,为NULL表示该科目为一级分类(大类),不为NULL表示该科目为二级分类(小类)。
以上查询结果中,percentage字段表示该科目下的课程数量占所有课程数量的百分比。如果该科目下没有对应的课程,百分比为0。
相关问题
id teacher_id subject_id subject_parent_id title price lesson_num cover buy_count view_count version status is_deleted gmt_create gmt_modified 这是课程表的字段 id title parent_id sort gmt_create gmt_modified这是科目表的字段 科目是二级分类 查询 课程科目的title和所占所有课程的百分比
可以使用以下SQL语句查询:
```
SELECT s.title, CONCAT(FORMAT(COUNT(c.id) / t.total * 100, 2), '%') AS percentage
FROM subject s
LEFT JOIN (
SELECT parent_id, COUNT(id) AS total
FROM subject
GROUP BY parent_id
) t ON s.id = t.parent_id
LEFT JOIN course c ON s.id = c.subject_id
WHERE s.parent_id IS NOT NULL
GROUP BY s.id
ORDER BY percentage DESC;
```
其中,`subject`表示科目表,`course`表示课程表。这条SQL语句首先进行了左连接(LEFT JOIN)操作,将科目表和课程表按照科目ID关联起来。然后,使用子查询(subquery)统计每个二级科目下的课程总数。接着,使用GROUP BY对科目ID进行分组,统计每个科目所占的所有课程数,并计算出百分比。最后,使用ORDER BY按照百分比降序排列。
pymongo根据多个_id删除多个文档
你可以使用`delete_many()`方法来删除多个文档,其中可以传入一个字典作为筛选条件。要根据多个`_id`删除多个文档,可以将多个`_id`组成一个列表,然后使用`$in`操作符进行筛选。以下是一个示例代码:
```python
import pymongo
# 假设要删除的多个_id存储在一个列表中
id_list = [ObjectId('id1'), ObjectId('id2'), ObjectId('id3')]
# 创建MongoDB连接
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['testdb']
collection = db['testcollection']
# 删除多个文档
result = collection.delete_many({'_id': {'$in': id_list}})
print(result.deleted_count)
```
上述代码中,`id_list`列表中存储了多个`_id`,`delete_many()`方法的筛选条件为`{'_id': {'$in': id_list}}`,表示删除`_id`在`id_list`中的文档。`result.deleted_count`表示实际删除的文档数量。