elect t1.pro_c_id from ( ( select pro_c_id, count(distinct(pro_pif_id)) as cnt1 from property, finances_product where pro_pif_id = p_id and pro_type = 1 group by pro_c_id ) as t1 join ( select pro_c_id, count(distinct(pro_pif_id)) as cnt2 from property, fund where pro_pif_id = f_id and pro_type = 3 group by pro_c_id ) as t2 on t1.pro_c_id = t2.pro_c_id ) where t1.cnt1 > t2.cnt2
时间: 2024-04-23 19:22:33 浏览: 98
这也是一条 SQL 查询语句,它的功能是查询出满足以下条件的商品属性:
1. 属性类型为 1 或 3
2. 属性所属的产品信息分别与 finances_product 表和 fund 表中的记录关联
3. 统计每个商品的不同产品信息数量(对于 pro_type = 1 的属性,统计 pro_pif_id 的个数;对于 pro_type = 3 的属性,统计 f_id 的个数)
4. 比较每个商品在不同类型的产品信息数量,只返回 pro_type = 1 的商品且其对应的 pro_pif_id 数量大于 pro_type = 3 的 f_id 数量。
查询结果是 pro_c_id 列的值。
相关问题
将下面SQL语句通过sqlalchemy转换成orm语句实现:ELECT j.element, count(distinct b.requisition_no) as cnt FROM dws_v2_test.dws_biz_detail b JOIN dws_v2_test.dws_test_result p ON b.requisition_no=p.requisition_no JOIN JSON_TABLE(p.biok_category, '$[*]' columns (element varchar(50) path '$')) j WHERE b.tech_platform=:tech_platform AND b.prod_id=:prod_id and b.biz_type=:biz_type and b.report_status like '报告%' and b.report_result=:report_result and b.serv_id in :service_ids and j.element <> '' GROUP BY j.element;
假设你已经创建了SQLAlchemy的session对象,并且已经定义了对应的ORM模型类,可以使用如下代码实现上述SQL查询的ORM语句:
```python
from sqlalchemy import func
from sqlalchemy.orm import aliased
from models import BizDetail, TestResult
# 别名定义
j = aliased(func.json_table(TestResult.biok_category, '$[*]'), name='j')
b = aliased(BizDetail, name='b')
# ORM查询语句
query = session.query(j.element, func.count(func.distinct(b.requisition_no)).label('cnt'))
query = query.join(TestResult, TestResult.requisition_no == b.requisition_no)
query = query.join(j, j.columns.element != '')
query = query.filter(b.tech_platform == :tech_platform, b.prod_id == :prod_id, b.biz_type == :biz_type,
b.report_status.like('报告%'), b.report_result == :report_result,
b.serv_id.in_(service_ids))
query = query.group_by(j.element)
# 获取查询结果
result = query.all()
```
其中,`models`是你定义的ORM模型类文件,包括`BizDetail`和`TestResult`两个类,分别对应数据库中的`dws_biz_detail`和`dws_test_result`表。需要注意的是,`json_table`函数需要通过`func`对象引入,而`alias`函数则需要通过`orm`对象的`aliased`方法引入,并且需要指定别名。ORM查询语句的写法与SQL语句类似,但是需要使用ORM模型类的属性替代表名和字段名。最后使用`all()`方法获取查询结果。
mysql 对于 ELECT * FROM T_QZSJ_BJJGXX where f_updatetime > ? 怎么截取 T_QZSJ_BJJGXX
在MySQL中,你可以使用内置的字符串函数SUBSTRING_INDEX来截取字符串。以下是一个示例查询,可以截取表名T_QZSJ_BJJGXX:
```sql
SELECT * FROM SUBSTRING_INDEX('T_QZSJ_BJJGXX', '_', -1)
WHERE f_updatetime > ?
```
这个查询使用下划线作为分隔符,并从字符串的最后一个下划线开始截取部分。这将返回T_QZSJ_BJJGXX中最后一个下划线后面的部分作为表名。请确保根据实际情况调整分隔符和参数的值。
阅读全文