mysql 1列SQL中的2个where条件

tkclm6bt  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(148)

我尝试使用WHERE子句从1列查看2个条件列。
例如:
我有一个数据集,其中我有一个很长的呼叫列表。我想看到两个不同的列,其中第一列显示等于或长于0秒的所有呼叫的计数,第二列显示等于或长于120秒的所有呼叫的计数。
这是我的第一个问题:

SELECT distinct year(date) Year,  monthname(date) as Month, count(calls) Leads
FROM database.calls
where duration >= 120
and year(date) = 2022
group by month(date)
order by max(date);

第二次查询:(唯一的区别是在第3行,持续时间等于0)

SELECT distinct year(date) Year,  monthname(date) as Month, count(calls) Leads
FROM database.calls
where duration >= 0
and year(date) = 2022
group by month(date)
order by max(date);

预期结果

| 年份|月份|呼叫(0秒)|呼叫(120秒)|
| - ------|- ------|- ------|- ------|
| 小行星2022| 1月|六五四|五二一|
| 小行星2022|二月|八九五|四六五|
| 小行星2022|三月|五六二|三二一|

nimxete2

nimxete21#

要获取条件总和,可以使用条件聚集:在聚合函数中指定一个条件,以便它只聚合合格的值。

SELECT YEAR(date)                    AS Year_,  
       MONTHNAME(date)               AS Month_, 
       SUM(IF(duration >   0, 1, 0)) AS Calls0Sec,
       SUM(IF(duration > 120, 1, 0)) AS Calls120Sec
FROM database.calls
WHERE YEAR(date) = 2022
GROUP BY YEAR(date), MONTHNAME(date)
ORDER BY MAX(date);

注意:您需要在GROUP BY子句中添加每个选定的非聚合字段,否则可能会出现DBMS错误或错误数据。

相关问题