2014-10-22 4 views
0

두 개의 테이블이 있습니다. 사용자 당 요금을 저장하는 첫 번째GROUP BY MySQL JOIN 쿼리

+----+----+----+ 
| id |uid |fee | 
+----+----+----+ 
| 1 |P001|100 | 
+----+----+----+ 
| 2 |P002|200 | 
+----+----+----+ 
| 3 |P003|250 | 
+----+----+----+ 
| 4 |P004|100 | 
+----+----+----+ 
| 5 |P001|200 | 
+----+----+----+ 
| 6 |P002|200 | 
+----+----+----+ 
| 7 |P003|250 | 
+----+----+----+ 
| 8 |P004|100 | 
+----+----+----+ 

초 한 상점 사용자 분류 나는이 SQL을 작성해야하는 방법

1 - 700 
2 - 500 
3 - 200 

을 다음과 같은 클래스로 그룹화 자신의 합계를 표시 할

+----+-----+ 
|uid |class| 
+----+-----+ 
|P001| 1 | 
+----+-----+ 
|P002| 1 | 
+----+-----+ 
|P003| 2 | 
+----+-----+ 
|P004| 3 | 
+----+-----+ 

질문? 미리 감사드립니다.

답변

1

한다고 가정 첫번째 테이블 TAB1을 시도하고 second1은 TAB2입니다

select t2.class,sum(t1.fee) from tab2 t2 inner join tab1 t1 on t2.uid=t1.uid 
group by t2.class 
1

이 시도 :

SELECT class, SUM(fee) 
FROM table1 t1 

LEFT JOIN table2 t2 
ON t1.uid = t2.uid 

GROUP BY class 
1

SELECT a.class, SUM(b.fee) 
FROM user_classification a 
INNER JOIN user_fees b 
ON a.uid = b.uid 
GROUP BY a.class 
ORDER BY a.class ASC 
1
SELECT  COUNT(*) AS Expr28, SInv_D.fTransUnitPrice AS fTransUnitPrice, SInv_D.fExtended AS Expr2, SInv_D.fTransQty * SInv_D.fTransUnitPrice AS fTransUnitPrice, 
         SInv.cMode AS cMode, SInv.cInvoicNum AS cInvoicNum, SInv.dOperaDate AS dOperaDate, SInv_D.cMode AS Expr9, SInv_D.cInvoicNum AS Expr10, 
         SInv_D.cItCode AS cItCode, SInv_D.cItName AS cItName, SInv_D.cTransUnit AS cTransUnit, SUM(SInv_D.fTransQty) AS fTransQty, SInv.cMode AS Expr4, 
         SInv.cInvoicNum AS Expr16, SInv_D.cItCode AS Expr15, SInv_D.fTransUnitPrice AS Expr19, SInv.dIssueDate AS Expr20, WareDef.cCode AS Expr21, 
         WareDef.cName1 AS Expr22, item.cUnitR AS Expr24, item.cName1 AS Expr25, item.fCostSTDR AS Expr26, SInv.cWare1 AS Expr27, item.cCode AS cCode, I.Expr999, 
         I.cItCode AS Expr1 
FROM   SInv LEFT OUTER JOIN 
         WareDef ON SInv.cWare1 = WareDef.cCode LEFT OUTER JOIN 
         SInv_D ON SInv.cInvoicNum = SInv_D.cInvoicNum AND SInv.dIssueDate = SInv_D.dIssueDate LEFT OUTER JOIN 
         item ON SInv_D.cItCode = item.cCode INNER JOIN 
          (SELECT  SUM(fTransQty) AS Expr999, cItCode 
          FROM   dbo.sinv_D 
          GROUP BY sinv_D.cItCode) I ON I.cItCode = SInv_D.cItCode 
WHERE  (SInv.dIssueDate BETWEEN 20130102 AND 20130109) AND (SInv.cWare1 = '003') AND (SInv.cMode = '122') AND (SInv_D.cMode = '122') 
GROUP BY SInv_D.cItCode, SInv_D.fTransUnitPrice, SInv_D.fExtended, SInv_D.fTransQty, SInv.cMode, SInv.cInvoicNum, SInv.dOperaDate, SInv_D.cMode, SInv_D.cInvoicNum, 
         SInv_D.cItName, SInv_D.cTransUnit, SInv.dIssueDate, WareDef.cCode, WareDef.cName1, item.cUnitR, item.cName1, item.fCostSTDR, SInv.cWare1, item.cCode, 
         I.Expr999, I.cItCode