gpt4 book ai didi

sql - 如何在 sql 查询中插入计数列

转载 作者:行者123 更新时间:2023-12-04 10:36:39 24 4
gpt4 key购买 nike

我需要从查询中检索到的表的第二列来计算行数,所以第一行会有一个 1,第二行会有一个 2,依此类推。我对 sql 不是很精通,所以如果这是一项简单的任务,我很抱歉。

我正在做的一个基本例子是:

SELECT [Name], [I_NEED_ROW_COUNT_HERE],[Age],[Gender]
FROM [customer]

行数必须是第二列,并将作为每一行的 ID。它必须是第二行,因为它生成的文本文件将被发送到状态,并且它们需要特定的格式。

谢谢你的帮助。

最佳答案

通过您的编辑,我看到您想要一行 编号 (通常称为 row number 而不是“计数”)最好从数据库中的唯一 ID(person_id 或其他一些唯一字段)收集。如果这是不可能的,您可以使用 ROW_NUMBER() OVER (ORDER BY EMPLOYEE_ID DESC) AS ID, 为该报告制作一份报告。在您的选择语句中。

select Name, ROW_NUMBER() OVER (ORDER BY Name DESC) AS ID,
Age, Gender
from customer

此函数向输出添加一个名为 ID 的字段(请参阅我在底部的提示以描述别名)。由于这不在数据库中,因此它需要一种方法来确定它将如何递增。在 over 关键字之后,它按名称降序排列。

计数资料如下(不会按行唯一):

如果每个客户有多个条目,但该用户的所选字段相同,并且您正在计算该用户的记录(汇总为该用户的一个结果记录),那么您将编写:
select Name, count(*), Age, Gender
from customer
group by name, age, gender

这将计算 ( see MSDN ) 按姓名、年龄和性别分组的所有用户记录(如果匹配,则为单个记录)。

但是,如果您正在计算所有记录,以便整个报告的每一行都有总计,那么您需要:
select Name, (select count(*) from customer) as "count", Age, Gender
from customer

提示:如果您使用 SSMS 之类的东西来编写查询,拖入列会在列周围放置括号。仅当列名中有空格时才需要这样做,但 DBA 会倾向于避免这种情况,就像瘟疫一样。此外,如果您需要一个特定的列标题,您可以像在我的第一个示例中一样使用 as 关键字。

W3Schools has a good tutorial on count()

The COUNT(column_name) function returns the number of values (NULL values will not be counted) of the specified column:


SELECT COUNT(column_name) FROM table_name;

The COUNT(*) function returns the number of records in a table:


SELECT COUNT(*) FROM table_name;

The COUNT(DISTINCT column_name) function returns the number of distinct values of the specified column:


SELECT COUNT(DISTINCT column_name) FROM table_name; 

COUNT(DISTINCT) works with ORACLE and Microsoft SQL Server, but not with Microsoft Access.

关于sql - 如何在 sql 查询中插入计数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31169541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com