现有用户表user_profile(device_id 设备号, gender 性别, age 年龄, university 学校, gpa 绩点, active_days_within_30 近30天活跃天数, question_cnt 提问数, answer_cnt 答题数)。请编写SQL语句查询学生数不大于2的学校里的学生情况,包含学生数、学生设备ID列表(多个ID用分号;隔开)
时间: 2023-05-16 20:04:33 浏览: 95
以下是SQL语句:
SELECT COUNT(*) AS 学生数, GROUP_CONCAT(device_id SEPARATOR ';') AS 学生设备ID列表, university AS 学校, gender AS 性别, age AS 年龄, gpa AS 绩点, active_days_within_30 AS 近30天活跃天数, question_cnt AS 提问数, answer_cnt AS 答题数
FROM user_profile
GROUP BY university
HAVING COUNT(*) <= 2;
相关问题
解释代码:select split_part(profile,',',4) gender,count(device_id) from user_profile group by gender
这段代码是在一个名为 `user_profile` 的表中,按照 `profile` 字段中的指定分隔符(逗号)将字符串拆分,并选择拆分后的第四个部分作为 `gender` 列。然后,对每个 `gender` 进行分组,并统计每个分组中的 `device_id` 的数量。
换句话说,这段代码的目的是从 `user_profile` 表中提取每个用户的性别信息,并计算每个性别对应的用户数量。其中,`profile` 字段包含了一个字符串,其中包含了多个部分,通过逗号进行分隔。通过使用 `split_part` 函数,我们可以提取出特定位置的部分作为性别信息,并根据性别进行分组和计数。
修改代码select device_id,gender,if( age >=25 then '25岁yishang') from user_profile union all select device_id ,gender ,if (age <20 then'其他') from user_profile;
这是一个关于修改 SQL 代码的问题,我可以回答。根据你提供的代码,我看到有一个语法错误,应该使用 CASE WHEN THEN ELSE END 来替代 IF THEN。修改后的代码如下:
SELECT device_id, gender,
CASE WHEN age >= 25 THEN '25岁以上' ELSE '其他' END
FROM user_profile;
希望这个回答对你有帮助。