查询列表学生在哪里等级b

时间:2016-09-30 02:59:50

标签: mysql

我有一些表

表:mhsw
净息差;名称;普罗迪
1001;威利; SIF
1002;卡雷尔; SIF
1003; fikri; TIF
1004; wawan; DPI

表:krs
MKID; mkname;年级;最终
1001; MK1;一个; ÿ
1001; MK2; B; ÿ
1001; MK3; B; ÿ
1002; MK2; C; ÿ
1002; MK3; B; ÿ
1002; MK1; d; ÿ
1003; MK1;一个; ÿ
1003; MK2; B; ÿ
1003; MK3;一个; ÿ
1004; MK1;一个; ÿ
1004; MK2; d; ÿ
1005; MK3;一个; ÿ

我想要我的结果
净息差;名称;普罗迪
1001;威利; SIF
1003; fikri; TIF

条件是打印mhsw列表,其中krs表上的所有mkid都是A,B,C级,最后是Y,当等级为D或E时不显示

我需要mysql查询 感谢

2 个答案:

答案 0 :(得分:0)

一个可选项是在krs表格上使用条件聚合来确定哪些学生只有ABC成绩以及所有Y成绩为了决赛。

SELECT t1.nim,
       t1.name,
       t1.prodi
FROM mhsw t1
INNER JOIN
(
    SELECT mkid
    FROM krs
    GROUP BY mkid
    HAVING SUM(CASE WHEN grade NOT IN ('A', 'B', 'C') THEN 1 END) = 0 AND   -- only A,B,C
           SUM(CASE WHEN final = 'Y' THEN 1 END) = COUNT(*)   -- all final is Y
) t2
    ON t1.nim = t2.mkid

答案 1 :(得分:0)

def dist(P, Q):
    """ Distance in 2-space.
    Params: 
        P (2-tuple): a point in 2-space
        Q (2-tuple): another point in 2-space
    Returns: (float) dist (P,Q)
    """
    dist = math.sqrt((P[0] - Q[0])**2 + (P[1]-Q[1])**2)
    return dist

如果mhsw.nim = tbl.mkid有多行,则显示为:

尼姆;名称;普罗迪; MKID; mkname;年级;最后,
1001;威利; SIF; 1001; MK1;一个; ÿ;
1001;威利; SIF; 1001; MK2; B; ÿ;
1001;威利; SIF; 1001; MK3; B; ÿ;

..
....
1004; wawan; DPI; 1004; MK1;一个; ÿ;