标签:count name question qpd mysql id SELECT
1. substring_index(str,delim,count)
str 表示要处理的字符串
delim 表示分隔符
count 计数
select substring_index(us.profile,',',-1) as gender,
count(*) as number
from user_submit us
group by gender;
比较count(*)和count(字段名)的区别:
前者对行的数目进行计算,包含null,
后者对特定的列的值具有的行数进行计算,不包含null,得到的结果将是除去值为null和重复数据后的结果。
2.
select difficult_level,
(sum(case when qpd.result = "right" then 1 else 0 end)/count(u.answer_cnt)) as correct_rate
from user_profile u inner join question_practice_detail qpd on u.device_id = qpd.device_id
inner join question_detail qd on qd.question_id = qpd.question_id
where university = "浙江大学"
group by difficult_level
order by correct_rate;
(sum(case when qpd.result = "right" then 1 else 0 end)/count(u.answer_cnt)) as correct_rate 正确率 = 正确的个数/总答题个数
sum(case when qpd.result = "right" then 1 else 0 end) sum表示计算和 当result="right"时为1 否则为0
user_profile u inner join question_practice_detail qpd on u.device_id = qpd.device_id inner join question_detail qd on qd.question_id = qpd.question_id 三张表之间连接inner join
3.
select device_id,gpa,age
from user_profile
order by gpa ,age
先按照业绩进行升序排序,再按照年龄进行升序排序
select device_id,gpa,age
from user_profile
order by gpa desc,age desc
先按照业绩进行降序排序,再按照年龄进行降序排序
4.
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2 …
WHEN 简单表达式n THEN 结果表达式n
[ ELSE 结果表达式n+1 ]
END
select (case when age >= 25 then "25岁及以上" else "25岁以下" end) as age_cnt, 当年龄大于25等于25时,显示为25岁及以上,否则显 示为25岁以下
count(*) as number
from user_profile
group by age_cnt
5. mysql语句的优先级
首先要选定需要操作的表 from / jion on / inner join
确定操作过滤的条件 where/ and /or
以何种方式展示数据 group by / having
确定操作方式 select
确定展示顺序 order by
截取展示 limit
6. 表之间的连接
1. Inner Join
SELECT * FROM a INNER JOIN b ON a.`name` = b.`name` 显示结果为a表和b表的交集部分:
2. LEFT OUTER JOIN
SELECT * FROM a LEFT OUTER JOIN b ON a.`name` = b.`name`显示结果为a的全部值,b表中匹配的则显示不匹配的则显示null:
3.
RIGHT OUTER JOIN
SELECT * FROM a RIGHT OUTER JOIN b ON a.`name` = b.`name`显示结果为b的全部值,a表中匹配的则显示不匹配的则显示null:
4.
UNION
注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的列的顺序必须相同。UNION 只选取记录,而UNION ALL会列出所有记录。
SELECT name FROM a UNION SELECT name FROM b显示a表和b表中所有内容,相同内容只显示一次:
5.
UNION ALL
SELECT name FROM a UNION ALL SELECT name FROM b显示a表和b表中所有内容:
标签:count,name,question,qpd,mysql,id,SELECT 来源: https://www.cnblogs.com/2habc/p/16235023.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。