[英]SQL query to (group by ) by condition of column
if I want to make a query that gets the count of users grouping ages 如果我想创建一个查询来获取分组年龄的用户数
to get the counts each year as alone : 每年只计算一次计数:
select count(*)
from tbl_user
group by age
how can I make a custom group by so I can get ages in ranges for example ... like this example : 我如何制作一个自定义组,以便我可以在范围内获得年龄...例如:像这样的例子:
group by ages as 0-18 , 19-25 , 26-...
Use a CASE
expression in a subquery and group by that expression in the outer query: 在子查询中使用
CASE
表达式并在外部查询中使用该表达式进行分组:
select age_group, count(*)
from (
select case when age between 0 and 18 then '0-18'
when age between 19 and 26 then '19-25'
...
end as age_group
from tbl_user
) t
group by age_group
SUM 1 and CASE WHEN work in MS SQL Server, which version of SQL are you using? SUM 1和CASE WHEN在MS SQL Server中工作,您使用的是哪个版本的SQL?
SELECT
SUM(CASE WHEN Age >= 0 AND Age <= 18 THEN 1 ELSE 0 END) AS [0-18],
SUM(CASE WHEN Age >= 19 AND Age <= 25 THEN 1 ELSE 0 END) AS [19-25]
FROM
YourTable
You could use a CASE
statement: 您可以使用
CASE
语句:
SELECT Sum(CASE WHEN age BETWEEN 0 AND 18 THEN 1 ELSE 0 END) as [0-18],
Sum(CASE WHEN age BETWEEN 19 AND 25 THEN 1 ELSE 0 END) as [19-25],
Sum(CASE WHEN age BETWEEN 26 AND 34 THEN 1 ELSE 0 END) as [26-34]
FROM tbl_user
this will "flatten" the data into one row - to get one row per grouping use this as the basis for a View, then select from that. 这将把数据“展平”成一行 - 每个分组得到一行,使用它作为View的基础,然后从中选择。
Data belongs in a table, not in the code. 数据属于表,而不是代码。 The age categories are data, IMHO.
年龄类别是数据,恕我直言。
CREATE TABLE one
( val SERIAL NOT NULL PRIMARY KEY
, age INTEGER NOT NULL
);
INSERT INTO one (age) SELECT generate_series(0,31, 1);
CREATE TABLE age_category
( low INTEGER NOT NULL PRIMARY KEY
, high INTEGER NOT NULL
, description varchar
);
INSERT INTO age_category (low,high,description) VALUES
( 0,19, '0-18')
, ( 19,26, '19-25')
, ( 26,1111, '26-...')
;
SELECT ac.description, COUNT(*)
FROM one o
JOIN age_category ac ON o.age >= ac.low AND o.age < ac.high
GROUP BY ac.description
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.