select¶
查询指定班级的每个学员指定数据情况,用到了多表查询,format格式化数据为指定小数位吗,concat字符串拼接。¶
SELECT
t1.realname 姓名,
FORMAT(
(
cur_weight_num - init_weight_num
) * 2,
2
) 累计减重,
diet_days 饮食记录,
day_coin 每日预算,
CONCAT(
cast(
format(
(
(
init_weight_num - cur_weight_num
) / init_weight_num
) * 100,
1
) AS CHAR
),
'%'
) 减重百分比,
t1.bmi 最新BMI,
t1.mobile 手机号,
t2.weight_day 日期
FROM
t_user t1,
(
SELECT
t1.user_id,
t1.id id,
t1.bmi BMI,
t2.realname,
max(t1.weight_day) AS weight_day
FROM
t_user_weight t1,
t_user t2,
t_clazz t3
WHERE
t3.clazz_name = 'BMS2018'
AND t2.clazz_id = t3.id
AND t2.id = t1.user_id
GROUP BY
t1.user_id
ORDER BY
t2.realname,
t1.weight_day DESC
) t2,
t_clazz t3
WHERE
t3.clazz_name = 'BMS2018'
AND t1.clazz_id = t3.id
AND t1.id = t2.user_id
AND t1.id = t2.user_id
ORDER BY
t1.id DESC
查询指定班级每个人的记录细节¶
SELECT
t2.realname 姓名,
t1.weight_day 日期,
FORMAT(t1.weight_num, 1) '体重(kg)',
t1.total_fat_num '总体脂肪量(%)',
t1.muscle_num 肌肉量,
t1.bmi BMI,
t1.physical_age 生理年龄,
water_num '水分(%)',
t1.inner_fat_num 内脂
FROM
t_user_weight t1,
t_user t2,t_clazz t3
WHERE
t3.clazz_name = 'BMS2018' and t2.clazz_id = t3.id
AND t2.id = t1.user_id
ORDER BY
t2.realname,
t1.weight_day DESC
- 分组取最新的一条记录
SELECT
*
FROM
t_assistant_article AS a,
(
SELECT
max(base_id) AS base_id,
max(create_time) AS create_time
FROM
t_assistant_article AS b
GROUP BY
base_id
) AS b
WHERE
a.base_id = b.base_id
AND a.create_time = b.create_time
分组查询最新一条生产示例:¶
SELECT
t2.realname 姓名,
t1.weight_day 日期,
FORMAT(t1.weight_num, 1) '体重(kg)',
t1.total_fat_num '总体脂肪量(%)',
t1.muscle_num 肌肉量,
t1.bmi BMI,
t1.physical_age 生理年龄,
water_num '水分(%)',
t1.inner_fat_num 内脂
FROM
t_user_weight t1,
t_user t2,
(
SELECT
t1.user_id,
t2.realname,
max(t1.weight_day) AS weight_day
FROM
t_user_weight t1,
t_user t2
WHERE
t2.clazz_id = 121
AND t2.id = t1.user_id
GROUP BY
t1.user_id
ORDER BY
t2.realname,
t1.weight_day DESC
) t3
WHERE
t2.clazz_id = 121
AND t2.id = t1.user_id
AND t1.user_id = t3.user_id
AND t1.weight_day = t3.weight_day
ORDER BY
t2.realname,
t1.weight_day DESC
使用case,查询结果运算,取四舍五入后整数¶
select realname,case sex when 1 then '男' when 2 then '女' end 性别,ROUND((20180824-birthday)/10000) 年龄 from t_user t1 where clazz_id = 121
查询用户每日注册量¶
SELECT
DATE_FORMAT(createDate, '%Y-%m-%d') AS '注册日期',
count(id) '人数'
FROM
USER
WHERE
userType = 6
AND createDate LIKE '2018%'
GROUP BY
DATE_FORMAT(createDate, '%Y-%m-%d')