簡體   English   中英

SQL查詢根據條件選擇行

[英]SQL query to select rows based on condition

SELECT
    MNo, X, Y, Z
FROM
    Coord C
    JOIN Result R ON R.ResultID = C.ResultID
    JOIN Member M ON M.MemberID = R.MemberID
WHERE
    M.StdID = @stdID
GROUP BY
    MNo

我有一個查詢,女巫為由MNo表示的每個成員給我x,y和z坐標。 有些議員可以有多於一排的座標,我想得到那些座標的平均值(並且只有那些),例如

MNo     x       y       z
15      10.6    12.3    20.1
16      11.1    17.8    14.0

僅以一排坐標省略了成員1-14和17-。 我怎樣才能做到這一點?

對於問題的第一部分-平均,您需要AVG。

對於問題的第二部分-如何過濾掉成員1-14和17-,您需要一個WHERE子句。

對於問題的第3部分-如何擺脫只有1行坐標的成員,您需要HAVING子句。

匯集這些,我們有:

SELECT
    MNo, AVG(X) AS X, AVG(Y) AS Y, AVG(Z) AS Z
FROM
    Coord C
    JOIN Result R ON R.ResultID = C.ResultID
    JOIN Member M ON M.MemberID = R.MemberID
WHERE
    M.StdID = @stdID
   AND M.MNo NOT BETWEEN 1 AND 14
   AND M.MNo NOT BETWEEN 17 and 20
GROUP BY
    MNo
HAVING
    COUNT(1) > 1

筆記:

  • 如果僅召集成員1-14和17-,因為它們是只有一組坐標的成員,則可以忽略兩個“ AND M.MNo NOT IN”語句。
  • COUNT(1)中的字段並不重要(可以是COUNT(*)或COUNT(X),等等。-任何字段都將返回行數,並且HAVING過濾器將刪除只有1行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM