表A:A_ID,A_CODE 表B:B_ID,B_STATE,B_CODE,B_LOT 联表查询 统计表A的ID记录数,A_CODE=B_CODE,统计表B的B_LOT去重后B_LOT数量,统计B_LOT去重后B_STATE=0,B_LOT去重后B_STATE=1数量,B_STATE可能为空或者null,mysql的sql如何表示
时间: 2023-08-18 15:04:22 浏览: 173
Data_analysis:分析kc_house数据库
你可以使用以下SQL语句来实现你的需求:
```sql
SELECT COUNT(A.A_ID) AS A_Record_Count,
COUNT(DISTINCT B.B_LOT) AS Distinct_B_LOT_Count,
COUNT(DISTINCT CASE WHEN B.B_STATE = 0 THEN B.B_LOT END) AS Distinct_B_LOT_State_0_Count,
COUNT(DISTINCT CASE WHEN B.B_STATE = 1 THEN B.B_LOT END) AS Distinct_B_LOT_State_1_Count
FROM 表A A
JOIN 表B B ON A.A_CODE = B.B_CODE;
```
这个SQL查询会联结表A和表B,并根据A_CODE和B_CODE进行匹配。然后,使用聚合函数COUNT来统计不同的记录数。使用COUNT(DISTINCT ...)可以去重统计B_LOT和B_STATE的数量。CASE WHEN语句用于条件判断,根据B_STATE的值来统计符合条件的B_LOT数量。
阅读全文