sas分组计数_SAS读书笔记:SQL

本文是SAS读书笔记,重点介绍了如何使用SQL进行数据检索、表的操作,包括分组计数、子查询、连接、合并等。通过实例详细解释了SQL在SAS中的应用,如使用GROUP BY进行计数,内外连接,以及如何管理表(复制、创建、删除、修改)。

0684b048b33971791b6a4dc6276f516d.png

1.SQL语言概述

38eae72978d7755aaffeceb1b6a1f58a.png
SAS术语与SQL术语的区别

SQl语言在SAS中通过PROC SQL来实现。PROC SQL可实现以下功能:

  • 制作报表与表;
  • 生成一些统计性数据;
  • 合并表;
  • 从其它表中抽取部分行、列;
  • 更新表的行、列;
  • 从其它数据管理系统(DBMS)中更新或抽取数据。

2.使用SQL检索数据

2.1 SQL的基本结构

PROC SQL;
    SELECT 表1.列1 , 表1.列2 ,```
    FROM 表1
    <WHERE>
    <GROUP BY>
    <ORDER BY>;
QUIT;

2.2 使用SQL对列进行操作

从句SELECT选择所需要的列,语法如下:

SELECT 表名称.列1 , 表名称.列2 ,···

在不混淆的情况下,表名称可以省略。SELECT从句中,表名称前不加库名,库名由FROM指定。

使用AS对列重命名,也可以重新定义属性,语法如下:

SELECT 表名称.列1 AS 新名称 FORMAT=  LABEL= ,表名称.列2 ···

还可以生成新的列,如下生成新列tax:

PROC SQL;
TITLE "Generating a new column";
select cars.Make,cars.Model,cars.MSRP,cars.msrp*0.06 as tax 
from sashelp.cars;
quit;
注意SELECT从句中列的先后顺序决定了输出报表中他们的输出顺序

2.3 使用SQL对行进行操作

1.DISTINCT关键字

不输出重复的行,紧跟在SELECT之后,一个SELECT从句只能有一个。

SELECT DISTINCT 表名称.列1 , 表名称.列2 ,···

2.WHERE从句

proc sql;
select make ,model,msrp,msrp*0.06 as Tax
    from sashelp.cars
where msrp<=40000;
quit;

如果针对新生成的列,则需要使用calulated

proc sql;
select make ,model,msrp,msrp*0.06 as Tax
    from sashelp.cars
where calculated t ax<=2400;
quit;

3.ORDER从句

按照某些列进行排序。语法:

ORDER BY 列1<DESC>,列2<DESC>

例如以下例子按照MSRP升序,MAKE降序,Model升序

PROC SQL;
Select make,model,msrp,msrp*0.06 as tax
  from sashelp.cars
    where calculated tax<2400
      order by msrp,make desc,model;
quit;

4.Group BY从句

用来查看分组信息。一般和汇总函数(summary function)一起使用。

7c45c587afb9bb74b1265755f0a8f16f.png

我们重点关注count函数。

语法:

count (列名)
注意列名为*时,
[ 0.997015] megaraid_sas 0000:02:00.0: BAR:0x1 BAR's base_addr(phys):0x00000000dc360000 mapped virt_addr:0xffffa6f5435a8000 [ 0.997020] megaraid_sas 0000:02:00.0: FW now in Ready state [ 0.997023] megaraid_sas 0000:02:00.0: 63 bit DMA mask and 32 bit consistent mask [ 0.997164] megaraid_sas 0000:02:00.0: firmware supports msix : (16) [ 0.997198] megaraid_sas 0000:02:00.0: irq 26 for MSI/MSI-X [ 0.997205] megaraid_sas 0000:02:00.0: irq 27 for MSI/MSI-X [ 0.997211] megaraid_sas 0000:02:00.0: irq 28 for MSI/MSI-X [ 0.997217] megaraid_sas 0000:02:00.0: irq 29 for MSI/MSI-X [ 0.997223] megaraid_sas 0000:02:00.0: irq 30 for MSI/MSI-X [ 0.997229] megaraid_sas 0000:02:00.0: irq 31 for MSI/MSI-X [ 0.997235] megaraid_sas 0000:02:00.0: irq 32 for MSI/MSI-X [ 0.997241] megaraid_sas 0000:02:00.0: irq 33 for MSI/MSI-X [ 0.997247] megaraid_sas 0000:02:00.0: irq 34 for MSI/MSI-X [ 0.997284] megaraid_sas 0000:02:00.0: requested/available msix 9/9 [ 0.997287] megaraid_sas 0000:02:00.0: current msix/online cpus : (9/8) [ 0.997289] megaraid_sas 0000:02:00.0: RDPQ mode : (disabled) [ 0.997295] megaraid_sas 0000:02:00.0: Current firmware supports maximum commands: 1008 LDIO threshold: 0 [ 0.997432] megaraid_sas 0000:02:00.0: Configured max firmware commands: 1007 [ 1.000237] megaraid_sas 0000:02:00.0: Performance mode :Latency [ 1.000240] megaraid_sas 0000:02:00.0: FW supports sync cache : No [ 1.000247] megaraid_sas 0000:02:00.0: megasas_disable_intr_fusion is called outbound_intr_mask:0x40000009 [ 1.041952] megaraid_sas 0000:02:00.0: FW provided supportMaxExtLDs: 1 max_lds: 64 [ 1.041956] megaraid_sas 0000:02:00.0: controller type : MR(1024MB) [ 1.041958] megaraid_sas 0000:02:00.0: Online Controller Reset(OCR) : Enabled [ 1.041960] megaraid_sas 0000:02:00.0: Secure JBOD support : No [ 1.041962] megaraid_sas 0000:02:00.0: NVMe passthru support : No [ 1.041964] megaraid_sas 0000:02:00.0: FW provided TM TaskAbort/Reset timeout : 0 secs/0 secs [ 1.041966] megaraid_sas 0000:02:00.0: JBOD sequence map support : No [ 1.041968] megaraid_sas 0000:02:00.0: PCI Lane Margining support : No [ 1.063693] megaraid_sas 0000:02:00.0: megasas_enable_intr_fusion is called outbound_intr_mask:0x40000000 [ 1.063695] megaraid_sas 0000:02:00.0: INIT adapter done [ 1.063697] megaraid_sas 0000:02:00.0: JBOD sequence map is disabled megasas_setup_jbod_map 5641 [ 181.529403] megaraid_sas 0000:02:00.0: DCMD(opcode: 0x3010100) is timed out, func:megasas_issue_blocked_cmd [ 181.529466] megaraid_sas 0000:02:00.0: Ignore DCMD timeout: megasas_ld_list_query 4784 [ 181.529469] megaraid_sas 0000:02:00.0: failed to get LD list [ 181.529515] megaraid_sas 0000:02:00.0: megasas_init_fw: megasas_get_device_list failed [ 181.529566] megaraid_sas 0000:02:00.0: megasas_disable_intr_fusion is called outbound_intr_mask:0x40000009 [ 181.529687] megaraid_sas 0000:02:00.0: Failed from megasas_init_fw 6359 [80505.414818] megaraid_sas 0000:02:00.0: BAR:0x1 BAR's base_addr(phys):0x00000000dc360000 mapped virt_addr:0xffffa6f5435e8000 [80505.414824] megaraid_sas 0000:02:00.0: Waiting for FW to come to ready state [80505.414827] megaraid_sas 0000:02:00.0: FW in FAULT state, Fault code:0x10000 subcode:0x0 func:megasas_transition_to_ready [80505.414831] megaraid_sas 0000:02:00.0: System Register set: [80505.415040] megaraid_sas 0000:02:00.0: Failed to transition controller to ready from megasas_init_fw! [80510.334173] megaraid_sas 0000:02:00.0: Waiting for FW to come to ready state [80543.956543] megaraid_sas 0000:02:00.0: FW in FAULT state, Fault code:0x10000 subcode:0x0 func:megasas_transition_to_ready [80543.956551] megaraid_sas 0000:02:00.0: System Register set: [80543.956779] megaraid_sas 0000:02:00.0: Failed to transition controller to ready for scsi5. [80543.956794] megaraid_sas 0000:02:00.0: Failed from megasas_init_fw 6359
最新发布
07-16
在排查 `megaraid_sas` 驱动初始化过程中遇到的固件故障问题时,通常需要关注以下几个方面: - **内核日志分析**:通过查看 `dmesg` 输出,可以获取关于控制器初始化失败的具体错误信息。例如,日志中可能会显示“firmware failed to transition controller to ready state”或类似的提示,这表明固件未能正确完成初始化流程[^1]。执行以下命令以获取相关信息: ```bash dmesg | grep -i megaraid ``` - **固件版本兼容性**:确保 RAID 控制器所使用的固件版本与当前驱动程序和硬件型号兼容。若固件版本过旧或存在已知缺陷,可能导致控制器无法正常启动。可以通过访问厂商提供的支持网站下载并更新适用于当前硬件的最新固件版本。 - **控制器重置与模块重新加载**:有时,RAID 控制器可能因初始化超时或内部状态异常而无法进入就绪状态。此时可尝试卸载并重新加载 `megaraid_sas` 模块,以强制控制器重新初始化: ```bash modprobe -r megaraid_sas modprobe megaraid_sas ``` 若该操作仍无法解决问题,则需进一步检查 BIOS 或 UEFI 设置中的 PCIe 相关配置是否正确,以及 RAID 控制器是否被系统识别为有效设备。 - **PCIe 总线枚举问题**:某些情况下,RAID 控制器可能未被正确枚举,导致驱动程序无法与其通信。使用以下命令确认控制器是否出现在 PCI 设备列表中: ```bash lspci | grep -i megaraid ``` 如果控制器未列出,则应检查主板 BIOS 是否启用了相应的 PCIe 插槽,并确认控制器物理连接良好且无硬件损坏。 - **使用 MegaCli 或 StorCLI 工具诊断**:安装并运行 `MegaCli` 或 `storcli` 等管理工具,可以更深入地诊断控制器状态及固件运行情况。例如,使用以下命令获取控制器详细信息: ```bash /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll ``` 若工具返回错误代码或提示固件异常,则需根据具体错误类型进行修复,如升级固件、清除 NVRAM 或恢复出厂设置等。 - **BIOS/UEFI 设置调整**:部分服务器平台允许在 BIOS 中选择 RAID 控制器的工作模式(如直通模式或 RAID 模式)。确保当前设置与操作系统预期的模式一致,否则可能导致驱动程序无法识别控制器。 - **内核模块参数调整**:在极少数情况下,可通过向 `modprobe` 传递特定参数来调整驱动行为。例如,添加 `reset_devices=1` 参数可强制驱动在加载时对控制器执行软复位: ```bash modprobe megaraid_sas reset_devices=1 ``` 此类参数通常用于调试或解决特定硬件兼容性问题,建议仅在厂商文档推荐的情况下使用。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值