写了几个难一点的sql

文章详细地展示了使用SQL查询对教学资料(包括不同类型和修改时间范围)进行分类和计数的方法,涉及基本书籍节点、关联文档、版本、学科等多个表的联接操作。
摘要由CSDN通过智能技术生成

写了几个难一点的sql

SELECT
bn.id AS book_node_id,
t.version_id,
bn.textbook_id,
s.id AS subject_id,
s.stage_id,
COUNT( CASE WHEN d.document_type_id = 1 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_1_count,
COUNT(
CASE

WHEN d.document_type_id = 1 
AND d.scope IS NULL 
AND p.document_id IS NOT NULL 
AND d.modified_time >= '2023-03-14' 
AND d.modified_time <= '2024-03-14' THEN
1 
END 
) AS type_1_count_year,
COUNT( CASE WHEN d.document_type_id = 2 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_2_count,
COUNT(
CASE

WHEN d.document_type_id = 2 
AND d.scope IS NULL 
AND p.document_id IS NOT NULL 
AND d.modified_time >= '2023-03-14' 
AND d.modified_time <= '2024-03-14' THEN
1 
END 
) AS type_2_count_year,
COUNT( CASE WHEN d.document_type_id = 3 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_3_count,
COUNT(
CASE

WHEN d.document_type_id = 3 
AND d.scope IS NULL 
AND p.document_id IS NOT NULL 
AND d.modified_time >= '2023-03-14' 
AND d.modified_time <= '2024-03-14' THEN
1 
END 
) AS type_3_count_year,
COUNT( CASE WHEN d.document_type_id = 4 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_4_count,
COUNT(
CASE

WHEN d.document_type_id = 4 
AND d.scope IS NULL 
AND p.document_id IS NOT NULL 
AND d.modified_time >= '2023-03-14' 
AND d.modified_time <= '2024-03-14' THEN
1 
END 
) AS type_4_count_year,
COUNT(
CASE

WHEN d.document_type_id IN ( 5, 6 ) 
AND d.scope IS NULL 
AND p.document_id IS NOT NULL THEN
1 
END 
) AS type_5_count,
COUNT(
CASE
	
	WHEN d.document_type_id IN ( 5, 6 ) 
	AND d.scope IS NULL 
	AND p.document_id IS NOT NULL 
	AND d.modified_time >= '2023-03-14' 
	AND d.modified_time <= '2024-03-14' THEN
		1 
	END 
	) AS type_5_count_year,
	COUNT( CASE WHEN d.scope IS NOT NULL AND p.document_id IS NOT NULL THEN 1 END ) AS paper_count,
	COUNT(
	CASE
			
			WHEN d.scope IS NOT NULL 
			AND p.document_id IS NOT NULL 
			AND d.modified_time >= '2023-03-14' 
			AND d.modified_time <= '2024-03-14' THEN
				1 
			END 
			) AS paper_count_year,
			COUNT( CASE WHEN r.id IS NOT NULL AND p.document_id IS NOT NULL THEN 1 END ) AS all_count,
			COUNT( CASE WHEN d.modified_time >= '2023-03-14' AND d.modified_time <= '2024-03-14' AND p.document_id IS NOT NULL THEN 1 END ) AS all_count_year 
		FROM
			basic_book_node bn
			LEFT JOIN basic_relation_document_book_node r ON bn.id = r.book_node_id
			LEFT JOIN basic_document d ON r.document_id = d.id
			LEFT JOIN basic_textbook t ON bn.textbook_id = t.id
			LEFT JOIN basic_version v ON t.version_id = v.id
			LEFT JOIN basic_subject s ON v.subject_id = s.id
			LEFT JOIN nrsc_document_publish_state p ON d.id = p.document_id 
		WHERE
			d.document_source IS NULL 
			AND d.is_deleted = 0 
	GROUP BY
bn.id
SELECT COALESCE
	( cd.count, 0 ) AS count,
	kp.id,
	kp.NAME,
	ty.id,
	ty.NAME 
FROM
	(
	SELECT
		a.id AS ab_point_id,
		b.id AS ab_type_id 
	FROM
		( SELECT id FROM zj_basic_knowledge_point WHERE basic_subject_id = 27 ) a
		INNER JOIN ( SELECT id FROM zj_basic_question_type WHERE subject_id = 27 ) b 
	) AS ab
	LEFT JOIN (
	SELECT
		COUNT( c.id ) AS count,
		t.id AS type_id,
		t.NAME AS type_name,
		d.id AS knowledge_point_id,
		d.NAME AS knowledge_point_name 
	FROM
		zj_jkx_basic_relation_question_knowledge_point p
		LEFT JOIN zj_jkx_basic_question c ON p.question_id = c.id
		LEFT JOIN zj_basic_knowledge_point d ON p.knowledge_point_id = d.id
		LEFT JOIN zj_basic_question_type t ON c.question_type_id = t.id 
	GROUP BY
		t.id,
		d.id 
	) AS cd ON ab.ab_point_id = cd.knowledge_point_id 
	AND ab.ab_type_id = cd.type_id
	LEFT JOIN zj_basic_question_type ty ON ab.ab_type_id = ty.id
	LEFT JOIN zj_basic_knowledge_point kp ON ab.ab_point_id = kp.id
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: SQL(Structured Query Language)是一种用于管理关系型数据库的语言,它允许用户在数据库中查询、插入、更新和删除数据。 MySQL是一种开源的关系型数据库管理系统,它通过使用SQL语言来实现对数据库的操作,用户可以使用SQL命令在MySQL数据库中创建表、插入数据、更新数据、删除数据以及查询数据等操作。MySQL支持标准SQL语言以及自己的扩展SQL语言,用户可以通过各种编程语言来访问和操作MySQL数据库。 ### 回答2: SQL(Structured Query Language 结构化查询语言)是一种用于管理和操作关系型数据库的语言。它提供了一套通用的语法和命令,使得用户可以轻松地进行数据库的创建、查询、修改和删除操作。 MySQL是一个流行的开源关系型数据库管理系统,它完全支持SQL。MySQL通过解析和执行SQL语句,实现了对数据的持久存储、读和管理。MySQL内置了SQL解析器,能够解析SQL语句的结构并将其转化为相应的操作,例如创建表、插入数据、查询数据以及更新和删除数据等。MySQL还提供了丰富的SQL函数和操作符,使得用户可以更加灵活和高效地进行数据操作。 总而言之,MySQL通过内置的SQL解析器和执行引擎,实现了对SQL语句的全面支持。用户可以使用SQL语句进行数据库的创建、查询、修改和删除操作,利用MySQL提供的功能和性能,高效地管理和操作关系型数据库。 ### 回答3: SQL(Structured Query Language)是一种用于管理关系数据库系统的编程语言。它通过使用预定义的命令和语法,允许用户对数据库中的数据进行查询、插入、更新和删除操作。 MySQL是一种开源的关系数据库管理系统(RDBMS),它是使用SQL进行交互的一种软件。MySQL通过提供完整的SQL支持,使用户能够使用SQL语句来操作数据库。 MySQL支持SQL的方式主要包括以下几个方面: 1. 查询:MySQL可以执行SELECT语句,用于从数据库中检索特定的数据记录。可以使用各种条件进行筛选和排序,并且可以使用聚合函数进行汇总和计算。 2. 插入:MySQL可以执行INSERT语句,用于将新的数据记录插入到数据库表中。 3. 更新:MySQL可以执行UPDATE语句,用于更新数据库表中的现有数据记录。 4. 删除:MySQL可以执行DELETE语句,用于从数据库表中删除特定的数据记录。 5. 创建和修改表结构:MySQL还支持创建和修改数据库表的操作,包括创建表、添加和删除列、创建和删除索引等。 6. 数据完整性:MySQL提供了多种约束和规则来确保数据的完整性,包括主键、唯一键、外键等。 总结起来,MySQL是通过实现SQL语法,将用户对数据库的操作进行解释和执行,并提供了必要的功能和机制来支持SQL操作。这使得MySQL成为了一种被广泛使用的可靠的关系数据库管理系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值