查询所有学生至2019-01-01时的年龄(展示形式: XX years XX mons XX days); 查询所有课程中的最高分、最低分、平均分和及格率,按课程id升序输出。MYSQI代码
时间: 2024-03-01 18:53:16 浏览: 198
查询所有学生至2019-01-01时的年龄(展示形式: XX years XX mons XX days):
```
SELECT CONCAT(
FLOOR(DATEDIFF('2019-01-01', birthday) / 365.25), ' years ',
FLOOR((DATEDIFF('2019-01-01', birthday) % 365.25) / 30.44), ' mons ',
FLOOR((DATEDIFF('2019-01-01', birthday) % 365.25) % 30.44), ' days'
) AS age
FROM students;
```
查询所有课程中的最高分、最低分、平均分和及格率,按课程id升序输出:
```
SELECT
course_id,
MAX(score) AS max_score,
MIN(score) AS min_score,
AVG(score) AS avg_score,
SUM(score >= 60) / COUNT(*) AS pass_rate
FROM scores
GROUP BY course_id
ORDER BY course_id ASC;
```
相关问题
我有一个数据库,有五个column:项目名称、1月、2月、3月、4月。我会生成一个prj变量以及一个mons变量。prj是一个字符,mons是一个列表,列表里随机出现1月、2月、3月、4月的排列组合。我想查询项目名称为prj,column为mons列表中的所有数据。给我代码,
假设你的表名为 `budget_table`,可以使用如下代码查询项目名称为 `prj`,月份在 `mons` 列表中的所有数据:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('your_database.db')
# 生成测试数据
prj = 'project1'
mons = ['1月', '2月', '4月']
# 构造 SQL 语句
sql = 'SELECT * FROM budget_table WHERE 项目名称=? AND ({})'.format(' OR '.join(['{}=?'.format(m) for m in mons]))
# 执行 SQL 语句
cursor = conn.cursor()
cursor.execute(sql, [prj] + mons)
results = cursor.fetchall()
# 打印查询结果
for row in results:
print(row)
# 关闭数据库连接
conn.close()
```
其中,`{}` 中的代码会根据 `mons` 中的元素数量动态生成 `OR` 条件,例如当 `mons` 为 `['1月', '2月', '4月']` 时,生成的 SQL 语句为:
```sql
SELECT * FROM budget_table WHERE 项目名称=? AND 1月=? OR 2月=? OR 4月=?
```
然后,使用 `cursor.execute(sql, [prj] + mons)` 执行 SQL 语句,并将查询结果存储在 `results` 中。最后,遍历 `results` 并打印查询结果即可。
我有一个数据库,有五个column:项目名称、1月、2月、3月、4月。我会生成一个prj变量以及一个mons变量。prj是一个字符,mons是一个列表,列表里随机出现1月、2月、3月、4月的排列组合。我想查询项目名称为prj,column为mons列表中的元素所在的所有数据。给我代码,
以下是一个使用参数化SQL查询数据库的示例代码:
```python
import sqlite3
# 连接到数据库
conn = sqlite3.connect('test.db')
# 创建一个游标对象
cursor = conn.cursor()
# 定义查询的参数
prj = '项目A'
mons = ['1月', '3月']
# 定义SQL语句
sql = 'SELECT * FROM mytable WHERE 项目名称 = ? AND ? IN (1月, 2月, 3月, 4月)'
# 执行查询
for mon in mons:
params = (prj, mon)
cursor.execute(sql, params)
results = cursor.fetchall()
print(f'查询结果:{results}')
# 关闭连接
conn.close()
```
在这个示例中,我们首先连接到一个名为'test.db'的SQLite数据库,然后创建一个游标对象。我们定义了查询的参数prj和mons,分别表示项目名称和月份列表。接下来,我们定义了SQL语句,其中使用了问号占位符来表示查询的参数。在执行查询之前,我们循环遍历mons列表,并使用execute()方法执行SQL查询。在每次循环中,我们使用参数化的方式传递查询的参数,并使用fetchall()方法获取查询结果。最后,我们打印出查询结果,并关闭数据库连接。
请注意,在SQL语句中,我们使用了IN运算符来判断查询的月份是否在1月、2月、3月、4月中。在使用IN运算符时,我们需要使用问号占位符,并将要查询的月份作为参数传递给execute()方法。
阅读全文