简体   繁体   中英

Get total sum and count of a column in MySql

Is a nested SELECT statement possible in sql? I'm working on a problem and I can't seem to get the data that I want. This is the sql that Im querying:

 SELECT derived.municipality, count(*) as counts, derived.bearing
    from (SELECT m.name as municipality,  count(*) as totalcount, sum(f.no_of_bearing_trees) as bearing 
    from farmer_profile f
    inner join barangay b on f.barangay_id = b.id
    inner join municipality m on b.municipality_id = m.id
    inner join province p on m.province_id = p.id
    group by b.name) as derived
    group by derived.municipality, derived.bearing

Here is the sample data im working with. I want to get the sum of all the bearing and total counts when i put a where clause at the bottom (eg. where derived.bearing < 20). All of those bearings with less than 20 will totaled as well as their counts. I'm not sure if a subquery is needed again or not.

升

I suspect that you want to filter on municipalities whose bearing sum is less than 20. If so, you can use a having clause for this:

select
    m.name as municipality,  
    count(*) as totalcount, 
    sum(f.no_of_bearing_trees) as bearing 
from farmer_profile f
inner join barangay b on f.barangay_id = b.id
inner join municipality m on b.municipality_id = m.id
inner join province p on m.province_id = p.id
group by b.name
having sum(f.no_of_bearing_trees) < 20

MySQL is lax about column aliases in the having clause, so you can also do:

having bearing < 20

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM